I've been using FRRouting for routers running BGP for a bit now and it's worked pretty nicely - however I've ran into some odd issues at times.
Typically when I use it, I'll manage the network interfaces with FRR itself to keep everything in a nice single configuration file opposed to jumping between it and NetworkManager.
I ran into some issues where some customers could establish a BGP session without a problem, however others would fail to establish the session and this error would show up on our side.
bgpd[3367]: [VX6SM-8YE5W][EC 33554460] 2001:0db8::1: nexthop_set failed, resetting connection - intf 0x2462550 bgpd[3367]: [NQGZV-Y3W62][EC 100663299] bgp_connect_success: bgp_getsockname(): failed for peer 2001:0db8::1, fd 69 bgpd[3367]: [V1CHF-JSGRR] %NOTIFICATION: sent to neighbor 2001:0db8::1 5/0 (Neighbor Events Error/Unspecific) 0 bytes
Your peers may see something along the lines of this:
Last error: Received: Finite state machine error
The issue is that when using FRR to manage your interfaces, you lose NetworkManager being nice and adding IPv6 link-local addresses to your interfaces for you. In turn, FRR internally doesn't know where to look for the nexthop which results in this error.
Solution
The solution is nice and simple, add the link-local address to the interfaces you're using in your FRR configuration. There are tools online [1] you can use to convert the MAC address of your NIC to an IPv6 link-local address using EUI-64.
Once you have it, add it to your configuration file. For example, if the MAC address for interface em1
was 00:53:00:be:ee:ef
- you would do as follows:
interface em1
! [..]
ipv6 address fe80::253:0ff:febe:eeef/64
exit
Restart or reload the FRR configuration and it should be sorted.
Footnotes
- [1]: Such as www.sput.nl/internet/ipv6/ll-mac.html