[FROG] Installing learned routes in the kernel routing table

Donald Sharp sharpd at cumulusnetworks.com
Sun Dec 8 19:13:26 EST 2019


I spoke w/ Daniel on the FRR Slack.  The issue stemmed from the fact
that BGP does not allow route installation from a nexthop that
resolves through a default kernel route.  Several solutions came to
mind:

1) Add a static /32 route that covers the neighbor's ip address
2) Add a route-map that changes the nexthop that resolves through the
connected route for the interface that the default route goes out.

donald

On Sun, Dec 8, 2019 at 12:47 AM Daniel Corbe <daniel at corbe.net> wrote:
>
> I apologize for asking a question which in all probability has a
> really obvious answer.
>
> I have a freshly installed FRR 7.2 from sources on Alpine Linux.  The
> 'zebra' process is running as id=frr and I have a working BGP session.
>   The issue is, it's not installing routes into the kernel routing
> table.
>
> Being that zebra and bgpd are running as the 'frr' user, I made sure
> zebra had cap_net_admin:
>
> # getcap zebra
> zebra = cap_net_admin+p
>
> My Running config:
>
> # show run
> Building configuration...
>
> Current configuration:
> !
> frr version 7.2
> frr defaults datacenter
> hostname aagico-alpine-mia
> no ipv6 forwarding
> !
> router bgp 64225
>  neighbor vultr peer-group
>  neighbor vultr remote-as 64515
>  neighbor vultr password xxx
>  neighbor vultr ebgp-multihop 2
>  neighbor 169.254.169.254 peer-group vultr
>  neighbor 2001:19f0:ffff::1 peer-group vultr
> !
> line vty
> !
> end
>
> /etc/frr/daemons:
>
> # cat /etc/frr/daemons
> zebra=yes
> bgpd=yes
> ospfd=no
> ospf6d=no
> ripd=no
> ripngd=no
> isisd=no
> pimd=no
> ldpd=no
> nhrpd=no
> eigrpd=no
> babeld=no
> sharpd=no
> staticd=yes
> pbrd=no
> bfdd=yes
> fabricd=no
>
> #
> # If this option is set the /etc/init.d/frr script automatically loads
> # the config via "vtysh -b" when the servers are started.
> # Check /etc/pam.d/frr if you intend to use "vtysh"!
> #
> vtysh_enable=yes
> zebra_options=" -s 90000000 --daemon -A 127.0.0.1"
> bgpd_options="   --daemon -A 127.0.0.1"
> ospfd_options="  --daemon -A 127.0.0.1"
> ospf6d_options=" --daemon -A ::1"
> ripd_options="   --daemon -A 127.0.0.1"
> ripngd_options=" --daemon -A ::1"
> isisd_options="  --daemon -A 127.0.0.1"
> pimd_options="  --daemon -A 127.0.0.1"
> ldpd_options="  --daemon -A 127.0.0.1"
> nhrpd_options="  --daemon -A 127.0.0.1"
> eigrpd_options="  --daemon -A 127.0.0.1"
> babeld_options="  --daemon -A 127.0.0.1"
> sharpd_options="  --daemon -A 127.0.0.1"
> staticd_options="  --daemon -A 127.0.0.1"
> pbrd_options="  --daemon -A 127.0.0.1"
> bfdd_options="  --daemon -A 127.0.0.1"
> fabricd_options="  --daemon -A 127.0.0.1"
>
> #MAX_FDS=1024
> # The list of daemons to watch is automatically generated by the init script.
> #watchfrr_options=""
>
> # for debugging purposes, you can specify a "wrap" command to start instead
> # of starting the daemon directly, e.g. to use valgrind on ospfd:
> #   ospfd_wrap="/usr/bin/valgrind"
> # or you can use "all_wrap" for all daemons, e.g. to use perf record:
> #   all_wrap="/usr/bin/perf record --call-graph -"
> # the normal daemon command is added to this at the end.
>
> _______________________________________________
> frog mailing list
> frog at lists.frrouting.org
> https://lists.frrouting.org/listinfo/frog



More information about the frog mailing list