Introduce 'rde evaluate all' a mode to work around path hiding in IXP
authorclaudio <claudio@openbsd.org>
Tue, 2 Mar 2021 09:45:07 +0000 (09:45 +0000)
committerclaudio <claudio@openbsd.org>
Tue, 2 Mar 2021 09:45:07 +0000 (09:45 +0000)
commit05ebbbf6caddeae625957b393fdd7a13e174146c
tree9de9a1520f558bab97e300f1a57fb5d19f723f67
parent809b75d37898c698c5cdf402a73b964d7ecbb51e
Introduce 'rde evaluate all' a mode to work around path hiding in IXP
route-server environments.

By default only the best path is sent to peers and if that path is filtered
then the path is hidden for that peer. On route-servers this is sometimes
not desried. For this 'rde evaluate all' will cause the evaluation process
to fall back to alternate routes and will redistribute the first non-filtered
path to the peer. This is very similar to per-peer RIBs but accomplishes
the same effect without the massive increase in memory usage. Compared to
the default mode this requires more CPU resources but it is probably less
than what per-peer RIBs would require.

'rde evaluate all' can be set and reset globally, on groups and on idividual
neighbors. It is not limited to route-server configs but route loops are
possible if not properly used.

OK benno@
usr.sbin/bgpd/bgpd.conf.5
usr.sbin/bgpd/bgpd.h
usr.sbin/bgpd/parse.y
usr.sbin/bgpd/printconf.c
usr.sbin/bgpd/rde.c
usr.sbin/bgpd/rde.h
usr.sbin/bgpd/rde_decide.c
usr.sbin/bgpd/rde_update.c