Commit Graph

37113 Commits

Author SHA1 Message Date
Louis Scalbert
c4a8263628 bgpd, tests: don't send local nexthop from rr client
AS 65000  | AS 65001
          |
      RR  |
       |  |
R1 --- | --- R2
          |

When r1 peer is an iBGP route reflector client of rr and r2 peer is a
eBGP neighbor of rr, and all three routers shares the same network, r2
receives announcements coming from r1 with a IPv6 link-local nexthop
from rr. This is incorrect as r2 should send traffic to r1 without
involving rr.

Do not send an IPv6 link-local nexthop if the originating peer is a
route-reflector client.

Link: https://github.com/FRRouting/frr/pull/16219#issuecomment-2397425505
Link: https://github.com/FRRouting/frr/pull/17037#discussion_r1792529683
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2024-10-14 10:06:35 +02:00
Louis Scalbert
4ae65cc21e bgpd: rename reflect in subgroup_announce_check
In subgroup_announce_check(), the variable reflect is misleading, as it
suggests a relation to route reflection. However, it actually refers to
the scenario where an iBGP peer announces a route to another iBGP peer.

Rename reflect to ibgp_to_ibgp.

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2024-10-14 10:06:35 +02:00
Donatas Abraitis
d1433ee9a8
Merge pull request #17062 from donaldsharp/dplane_fpm_nl_problems
zebra: Only notify dplane work pthread when needed
2024-10-14 08:14:34 +03:00
Donatas Abraitis
c45e1066a2
Merge pull request #17082 from anlancs/zebra/add-debug-flags-fix
zebra: add back one field for debug
2024-10-14 08:12:40 +03:00
Donatas Abraitis
a880bfaab2 isisd: Remove circuit state check for openfabric
If we have something like:

```
int eth1
 ip router openfabric x
 ipv6 router openfabric x
```

And eth1 is removed, the first `ip router ...` fails and only `ipv6 router ...`
is enabled.

If we leave only:

```
int eth1
 ipv6 router openfabric x
```

Then also, no interface is going to be enabled, which is weird too.

Fixes: https://github.com/FRRouting/frr/issues/17075

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2024-10-13 19:54:08 +03:00
anlan_cs
05e2472de7 zebra: add back one field for debug
The `flags` field is removed recently, so add back it for debug.

Signed-off-by: anlan_cs <anlan_cs@126.com>
2024-10-13 21:30:46 +08:00
Donatas Abraitis
129c652ff1
Merge pull request #17071 from louis-6wind/fix-ipv6-ll-nexthop-unchanged
bgpd: split nexthop-local unchanged peer subgroup
2024-10-13 14:16:54 +03:00
Donald Sharp
cf2624a993 fpm: Allow max fpm message size to float based on ecmp
Currently the max message size is 4k.  With a 256 way
ecmp FRR is seeing message sizes that are in the
6k size.  There is desire to allow this to increase as
well to 512.  Since the multipath size directly effects
how big the message may be when sending the routes ecmp
let's give a bit of headroom for this value when compiling
FRR at greater sizes.  Additionally since we know not everyone
is using such large ecmp, allow them to build as appropriate
for their use cases.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-10-11 09:37:37 -04:00
Donald Sharp
8aa97a439f zebra: Slow down fpm_process_queue
When the fpm_process_queue has run out of space
but has written to the fpm output buffer, schedule
it to wake up immediately, as that the write will go out
pretty much immediately, since it was scheduled first.
If the fpm_process_queue has not written to the output
buffer then delay the processing by 10 milliseconds to
allow a possibly backed up write processing to have a
chance to complete it's work.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-10-11 09:37:37 -04:00
Donald Sharp
963792e8c5 zebra: Only notify dplane work pthread when needed
The fpm_nl_process function was getting the count
of the total number of ctx's processed.  This leads
to after having processed 1 context to always signal
the dataplane that there is work to do.  Change the
code to only notify the dplane worker when a context
was actually added to the outgoing context queue.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-10-11 09:37:37 -04:00
Louis Scalbert
7bccb8d380 topotest: add bgp_bmp_vrf topotest
Add test to check BMP in VRF.

Note that the following configuration works with interface r1-eth0
towards 192.0.2.10 (BMP collector) in the default VRF but not in vrf1.

> router bgp 65501 vrf vrf1
>  bmp targets bmp1
>   bmp connect 192.0.2.10 port 1789 min-retry 100 max-retry 10000

Also, for some reasons, the test works even without "bgpd: bmp loc-rib
peer up/down for vrfs" commit.

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2024-10-11 15:14:57 +02:00
Louis Scalbert
0430d6f70b topotests: check for bmp peer up/down messages
Check for bmp peer up / down  messages

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2024-10-11 15:14:56 +02:00
Louis Scalbert
d8bfd04e46 topotests: add peer down log in bmp collector
Add peer down log in bmp collector

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2024-10-11 15:14:34 +02:00
Louis Scalbert
1de5015b09 topotests: log bmp peer up message type in collector
Log "peer up" message type in BMP collector logs.

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2024-10-11 15:14:21 +02:00
Maxence Younsi
035304c25a bgpd: bmp loc-rib peer up/down for vrfs
added bmp bgp peer for vrfs
added peer up vrf in bmp peer up state
added vrf state in bmpbgp
added safe bmp_peer_sendall : bmp_peer_sendall_safe
changed bgp_open_send to call new bgp_open_make
bgp_open_make creates a bgp open packet, now used in bmp for peer up vrf
added hook and call to bgp instance state
vrf peer state is recomputed when interfaces (including vrf itf) go up / down
and when it gets created or removed

Link: e48ba38070
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
Signed-off-by: Maxence Younsi <mx.yns@outlook.fr>
2024-10-11 15:14:12 +02:00
Louis Scalbert
33189510e8 topotests: check export labels to pre-policy bmp
Check export labels to pre-policy bmp

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2024-10-11 15:10:24 +02:00
Louis Scalbert
1005c14768 tests: test nexthop-local unchanged with reflector
Test nexthop-local unchanged with route-reflector.

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2024-10-11 14:08:12 +02:00
Louis Scalbert
5f035edf25 tests: test nexthop-local unchanged with route-server
Test nexthop-local unchanged with route-server.

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2024-10-11 14:07:52 +02:00
Louis Scalbert
91512c3048 bgpd: split nexthop-local unchanged peer subgroup
5bb99ccad2 ("bgpd: reset ipv6 invalid link-local nexthop") now resets
the link-local when originating and destination peers are not on the
same network segment. However, it does not work all the time.

The fix compares the 'from' and 'peer' global IPv6 address. However,
'peer' refers to one of the peers of subgroup. The subgroup may contain
peers located on different network segment.

Split nexthop-local unchanged peer subgroup by network segment.

Fixes: 5bb99ccad2 ("bgpd: reset ipv6 invalid link-local nexthop")
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2024-10-11 14:07:46 +02:00
Louis Scalbert
da7b2d9831 tests: unset r3 enforce-first-as bgp_route_server_client
Unset enforce-first-as on r3 of bgp_route_server_client to enable the
reception of routes on this router.

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2024-10-11 14:07:37 +02:00
Louis Scalbert
dd135843ad tests: rework bgp_route_server_client
Rework bgp_route_server_client in a more standard form in order to
facilitate the next commut changes. Cosmetic change.

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2024-10-11 14:07:09 +02:00
Donald Sharp
adc0f004cf
Merge pull request #17059 from opensourcerouting/fix/move_match_ipv6_next-hop_acl_to_routemap_lib
bgpd: Move some non BGP-specific route-map functions to lib
2024-10-11 07:14:51 -04:00
Donald Sharp
554901139c
Merge pull request #17064 from rudis/master
doc: routemap: fix typos
2024-10-11 07:13:59 -04:00
Shbinging
972308b174 ospfd: fix no_area_range_cost_NUM command, NUM can be omitted
Signed-off-by: Shbinging <bingshui@smail.nju.edu.cn>
2024-10-11 09:52:16 +00:00
Simon Ruderich
8e818bf76c doc: routemap: fix typos
Signed-off-by: Simon Ruderich <simon@ruderich.org>
2024-10-11 08:34:26 +02:00
Donatas Abraitis
813a9f6e39
Merge pull request #17037 from louis-6wind/fix-ipv6-ll-nexthop
bgpd: fix ipv6 nexthop-local unchanged
2024-10-11 08:36:14 +03:00
Donatas Abraitis
997f710df2
Merge pull request #17061 from Jafaral/10.3-dev
10.3 dev deb/rpm housekeeping
2024-10-11 08:24:06 +03:00
Donatas Abraitis
279735fd95
Merge pull request #17040 from sri-mohan1/srib-24-frr-a
bgpd: changes for code maintainability
2024-10-11 08:19:44 +03:00
Jafar Al-Gharaibeh
b1e5a6fb1d
Merge pull request #17057 from donaldsharp/bgp_graceful_restart_vrf
bgpd: Allow specification of vrf in show bgp neighbor graceful-restart
2024-10-10 19:39:10 -05:00
Donald Sharp
1014901021
Merge pull request #17044 from baozhen-H3C/202410091476
isisd: Lsp fragments will delete the corresponding dyn_cache entry.
2024-10-10 18:41:27 -04:00
Jafar Al-Gharaibeh
426a566cb6 debian, redhat: frr dev 10.3 package housekeeping
Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
2024-10-10 15:44:30 -05:00
Jafar Al-Gharaibeh
400cc7055a debian, redhat: updating changelog for 10.1 release
Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
2024-10-10 15:32:38 -05:00
sri-mohan1
c853c8d13b bgpd: changes for code maintainability
these changes are for improving the code maintainability and readability

Signed-off-by: sri-mohan1 <sri.mohan@samsung.com>
2024-10-10 23:23:20 +05:30
Donatas Abraitis
b9a9be492e bgpd: Move some non BGP-specific route-map functions to lib
They are managed under `frr-route-map`, not under `frr-bgp-route-map`.

Fixes: https://github.com/FRRouting/frr/issues/17055

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2024-10-10 16:52:57 +03:00
Donatas Abraitis
310ca4f33d lib: Apply and generate route-map commands earlier before any other protocol
If e.g. BGP neighbor is using a route-map at the boot, that is not yet created,
then the log is spammed with `The route-map 'X' does not exist`.

Processing earlier, should do the trick.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2024-10-10 16:24:24 +03:00
Donald Sharp
0f8842ed18 bgpd: Allow specification of vrf in show bgp neighbor graceful-restart
This command did not allow the operator to display neighbor information
related to graceful-restart when used inside of a vrf.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-10-10 09:13:39 -04:00
Donald Sharp
cc7d89a82b
Merge pull request #17054 from opensourcerouting/fix/add_missing_logrotate_mgmtd
tools: Add missing mgmtd into logrotate/rsyslogd
2024-10-10 08:54:52 -04:00
Donatas Abraitis
f57a56bca0 tools: Add missing mgmtd into logrotate/rsyslogd
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2024-10-10 13:01:05 +03:00
Donatas Abraitis
5913d49d5b bgpd: Drop deprecated bgp network import-check exact command
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2024-10-10 12:53:51 +03:00
Donatas Abraitis
2634ad94c6
Merge pull request #17050 from chriswiggins/doc/vrrp-in-vm-bridge
Adds note about VRRP issues inside a VM with underlying bridge networking
2024-10-10 12:45:49 +03:00
Louis Scalbert
6dc4d95061 topotests: add bgp_nexthop_ipv6
Add bgp_nexthop_ipv6 to check the ipv6 link-local nexthop conformity in
several situations.

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2024-10-10 11:39:04 +02:00
Louis Scalbert
5bb99ccad2 bgpd: reset ipv6 invalid link-local nexthop
If the "nexthop-local unchanged" setting is enabled, it preserves the
IPv6 link-local nexthop from the originating peer. However, if the
originating and destination peers are not on the same network segment,
the originating peer's IPv6 link-local address will be unreachable from
the destination peer.

In such cases, reset the IPv6 link-local nexthop, even if "nexthop-local
unchanged" is set on the destination peer.

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2024-10-10 11:39:04 +02:00
Louis Scalbert
34c1dd076e bgpd: do not insert link-local with local unchanged
Do not add an IPv6 link-local nexthop if the originating peer does not
provide one and the nexthop-local unchanged setting is enabled.

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2024-10-10 11:38:58 +02:00
Donatas Abraitis
d30fa812ae
Merge pull request #17002 from louis-6wind/bfd-values
bfdd, yang: change bfd timer and multiplier values
2024-10-10 09:25:42 +03:00
Chris Wiggins
dbf39ad076 doc: VRRP troubleshooting info for linux-hosted VMs
Signed-off-by: Chris Wiggins <chris@wiggins.nz>
2024-10-10 17:44:23 +13:00
Jafar Al-Gharaibeh
f9f11c675f
Merge pull request #17042 from donaldsharp/zebra_pw_crash
zebra: Fix crash in pw code
2024-10-09 13:46:25 -05:00
Louis Scalbert
38ad215feb Revert "bgpd: Exclude case for remote prefix w/o link-local"
This reverts commit 5f6a61f91f.

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2024-10-09 16:36:27 +02:00
baozhen-H3C
c2b70369b6 isisd: Lsp fragments will delete the corresponding dyn_cache entry.
When LSP fragments age, isis_dynhn_remove() is also called to remove the corresponding dyhn_cache entries.

Signed-off-by: baozhen-H3C <bao.zhen@h3c.com>
2024-10-09 19:41:07 +08:00
Donald Sharp
154a89bc31 zebra: Fix crash in pw code
Recent PR #17009 introduced a crash in pw handing
for deletion.  Let's fix that problem.

Fixes: #17041
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-10-09 07:17:29 -04:00
Philippe Guibert
7ae70eb5ef zebra: fix heap-use-after free on ns shutdown
The following ASAN issue has been observed:

> ERROR: AddressSanitizer: heap-use-after-free on address 0x6160000acba4 at pc 0x55910c5694d0 bp 0x7ffe3a8ac850 sp 0x7ffe3a8ac840
> READ of size 4 at 0x6160000acba4 thread T0
>         #0 0x55910c5694cf in ctx_info_from_zns zebra/zebra_dplane.c:3315
>     #1 0x55910c569696 in dplane_ctx_ns_init zebra/zebra_dplane.c:3331
>     #2 0x55910c56bf61 in dplane_ctx_nexthop_init zebra/zebra_dplane.c:3680
>     #3 0x55910c5711ca in dplane_nexthop_update_internal zebra/zebra_dplane.c:4490
>     #4 0x55910c571c5c in dplane_nexthop_delete zebra/zebra_dplane.c:4717
>     #5 0x55910c61e90e in zebra_nhg_uninstall_kernel zebra/zebra_nhg.c:3413
>     #6 0x55910c615d8a in zebra_nhg_decrement_ref zebra/zebra_nhg.c:1919
>     #7 0x55910c6404db in route_entry_update_nhe zebra/zebra_rib.c:454
>     #8 0x55910c64c904 in rib_re_nhg_free zebra/zebra_rib.c:2822
>     #9 0x55910c655be2 in rib_unlink zebra/zebra_rib.c:4212
>     #10 0x55910c6430f9 in zebra_rtable_node_cleanup zebra/zebra_rib.c:968
>     #11 0x7f26f275b8a9 in route_node_free lib/table.c:75
>     #12 0x7f26f275bae4 in route_table_free lib/table.c:111
>     #13 0x7f26f275b749 in route_table_finish lib/table.c:46
>     #14 0x55910c65db17 in zebra_router_free_table zebra/zebra_router.c:191
>     #15 0x55910c65dfb5 in zebra_router_terminate zebra/zebra_router.c:244
>     #16 0x55910c4f40db in zebra_finalize zebra/main.c:249
>     #17 0x7f26f2777108 in event_call lib/event.c:2011
>     #18 0x7f26f264180e in frr_run lib/libfrr.c:1212
>     #19 0x55910c4f49cb in main zebra/main.c:531
>     #20 0x7f26f2029d8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
>     #21 0x7f26f2029e3f in __libc_start_main_impl ../csu/libc-start.c:392
>     #22 0x55910c4b0114 in _start (/usr/lib/frr/zebra+0x1ae114)

It happens with FRR using the kernel. During shutdown, the
namespace identifier is attempted to be obtained by zebra, in an
attempt to prepare zebra dataplane nexthop messages.

Fix this by accessing the ns structure.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2024-10-08 22:25:55 +02:00