Salut fellow bird users, we recently tried to simplify the bfd configuration and replaced our existing configuration with the following: -------------------------------------------------------------------------------- # Using BFD virtually everywhere, enable it globally protocol bfd { } ... protocol bgp incoming_r3ge { local as myas; direct; bfd on; ... -------------------------------------------------------------------------------- And now bird repots every second the following message: -------------------------------------------------------------------------------- 2024-08-08 11:00:15.727 <ERR> bfd1: Socket error: Destination address required -------------------------------------------------------------------------------- The router has various interfaces, some tunnel, some wireguard tunnel, some bridges, etc. and I have a bit trouble to spot, what is causing the error message. All interfaces that are used for BGP obviously have an IP address , but many bfd sessions are actually down that I'd expect to be up: -------------------------------------------------------------------------------- bird> show bfd sessions bfd1: IP address Interface State Since Interval Timeout 2a0a:e5c0:10:1:fa5e:3cff:fe2d:eb04 eth0 Down 2024-08-06 1.000 0.000 2a0a:5480:5:2::1 or3ge Down 2024-08-06 1.000 0.000 2a0a:e5c0:10:1::123 eth0 Up 2024-08-06 0.100 0.500 2a0a:e5c0:10:1:fa5e:3cff:fe2d:eafc eth0 Down 2024-08-06 1.000 0.000 2a0a:e5c0:32:1::1 oserver121 Down 2024-08-06 1.000 0.000 2a0a:e5c0:142:2::2 iserver138 Down 2024-08-06 1.000 0.000 2a0a:e5c0:142:3::2 iapured2 Down 2024-08-06 1.000 0.000 2a0a:e5c0:43:2::1 oserver138 Down 2024-08-06 1.000 0.000 2a0a:e5c0:142:1::2 ir3ge Down 2024-08-06 1.000 0.000 2a0a:e5c0:10:1::141 eth0 Up 2024-08-06 0.100 0.500 2a0a:e5c0:10:1::122 eth0 Up 2024-08-06 0.100 0.500 bird> -------------------------------------------------------------------------------- (excluding the two 2a0a:e5c0:10:1:.. ones, they don't have bfd enabled at the moment) Is using protocol bfd {} actually *not* supported? Best regards, Nico -- Sustainable and modern Infrastructures by ungleich.ch
On Thu, Aug 08, 2024 at 01:10:39PM +0200, Nico Schottelius via Bird-users wrote:
Salut fellow bird users,
we recently tried to simplify the bfd configuration and replaced our existing configuration with the following:
-------------------------------------------------------------------------------- # Using BFD virtually everywhere, enable it globally protocol bfd { }
... protocol bgp incoming_r3ge { local as myas; direct; bfd on; ... --------------------------------------------------------------------------------
And now bird repots every second the following message:
-------------------------------------------------------------------------------- 2024-08-08 11:00:15.727 <ERR> bfd1: Socket error: Destination address required --------------------------------------------------------------------------------
The router has various interfaces, some tunnel, some wireguard tunnel, some bridges, etc. and I have a bit trouble to spot, what is causing the error message.
Is using protocol bfd {} actually *not* supported?
Hi Yes, it is, That is the usual way how i configure it. I could imagine there could be issues in combination with VRFs (in which case i would suggest BFD protocol for each VRF), The error message looks like there is a BFD session with zero remote IP... Perhaps there is some issue with unnumbered links asking for BFD sessions? -- Elen sila lumenn' omentielvo Ondrej 'Santiago' Zajicek (email: santiago@crfreenet.org) "To err is human -- to blame it on a computer is even more so."
Hello Nico, I had the same problem in April: https://bird.network.cz/pipermail/bird-users/2024-April/017633.html (I made a typo in the last email, I used *e*BGP not *i*BGP sessions) I did not find a solution, ran out of time and went without BFD via wireguard. Wish you more success :) Best, fran On 08/08/2024 13:10, Nico Schottelius via Bird-users wrote:
Salut fellow bird users,
we recently tried to simplify the bfd configuration and replaced our existing configuration with the following:
-------------------------------------------------------------------------------- # Using BFD virtually everywhere, enable it globally protocol bfd { }
... protocol bgp incoming_r3ge { local as myas; direct; bfd on; ... --------------------------------------------------------------------------------
And now bird repots every second the following message:
-------------------------------------------------------------------------------- 2024-08-08 11:00:15.727 <ERR> bfd1: Socket error: Destination address required --------------------------------------------------------------------------------
The router has various interfaces, some tunnel, some wireguard tunnel, some bridges, etc. and I have a bit trouble to spot, what is causing the error message.
All interfaces that are used for BGP obviously have an IP address , but many bfd sessions are actually down that I'd expect to be up:
-------------------------------------------------------------------------------- bird> show bfd sessions bfd1: IP address Interface State Since Interval Timeout 2a0a:e5c0:10:1:fa5e:3cff:fe2d:eb04 eth0 Down 2024-08-06 1.000 0.000 2a0a:5480:5:2::1 or3ge Down 2024-08-06 1.000 0.000 2a0a:e5c0:10:1::123 eth0 Up 2024-08-06 0.100 0.500 2a0a:e5c0:10:1:fa5e:3cff:fe2d:eafc eth0 Down 2024-08-06 1.000 0.000 2a0a:e5c0:32:1::1 oserver121 Down 2024-08-06 1.000 0.000 2a0a:e5c0:142:2::2 iserver138 Down 2024-08-06 1.000 0.000 2a0a:e5c0:142:3::2 iapured2 Down 2024-08-06 1.000 0.000 2a0a:e5c0:43:2::1 oserver138 Down 2024-08-06 1.000 0.000 2a0a:e5c0:142:1::2 ir3ge Down 2024-08-06 1.000 0.000 2a0a:e5c0:10:1::141 eth0 Up 2024-08-06 0.100 0.500 2a0a:e5c0:10:1::122 eth0 Up 2024-08-06 0.100 0.500 bird> --------------------------------------------------------------------------------
(excluding the two 2a0a:e5c0:10:1:.. ones, they don't have bfd enabled at the moment)
Is using protocol bfd {} actually *not* supported?
Best regards,
Nico
Hello, On 8/8/24 13:10, Nico Schottelius via Bird-users wrote:
Salut fellow bird users,
we recently tried to simplify the bfd configuration and replaced our existing configuration with the following:
-------------------------------------------------------------------------------- # Using BFD virtually everywhere, enable it globally protocol bfd { }
... protocol bgp incoming_r3ge { local as myas; direct; bfd on; ... --------------------------------------------------------------------------------
And now bird repots every second the following message:
-------------------------------------------------------------------------------- 2024-08-08 11:00:15.727 <ERR> bfd1: Socket error: Destination address required --------------------------------------------------------------------------------
The router has various interfaces, some tunnel, some wireguard tunnel, some bridges, etc. and I have a bit trouble to spot, what is causing the error message.
All interfaces that are used for BGP obviously have an IP address , but many bfd sessions are actually down that I'd expect to be up:
-------------------------------------------------------------------------------- bird> show bfd sessions bfd1: IP address Interface State Since Interval Timeout 2a0a:e5c0:10:1:fa5e:3cff:fe2d:eb04 eth0 Down 2024-08-06 1.000 0.000 2a0a:5480:5:2::1 or3ge Down 2024-08-06 1.000 0.000 2a0a:e5c0:10:1::123 eth0 Up 2024-08-06 0.100 0.500 2a0a:e5c0:10:1:fa5e:3cff:fe2d:eafc eth0 Down 2024-08-06 1.000 0.000 2a0a:e5c0:32:1::1 oserver121 Down 2024-08-06 1.000 0.000 2a0a:e5c0:142:2::2 iserver138 Down 2024-08-06 1.000 0.000 2a0a:e5c0:142:3::2 iapured2 Down 2024-08-06 1.000 0.000 2a0a:e5c0:43:2::1 oserver138 Down 2024-08-06 1.000 0.000 2a0a:e5c0:142:1::2 ir3ge Down 2024-08-06 1.000 0.000 2a0a:e5c0:10:1::141 eth0 Up 2024-08-06 0.100 0.500 2a0a:e5c0:10:1::122 eth0 Up 2024-08-06 0.100 0.500 bird> --------------------------------------------------------------------------------
(excluding the two 2a0a:e5c0:10:1:.. ones, they don't have bfd enabled at the moment)
Is using protocol bfd {} actually *not* supported?
Best regards,
Nico
have you made any revelations connected to this issue? Do I understand it correctly that the BGP sessions are up but the respective BFD sessions are down? I have encountered this kind of behavior when one side of the iBGP had been configured with 'direct' and the other was not, so maybe just double check if that is not the cause of the problem as well. If not I would need additional information to be able to recreate it. What version of BIRD are you running? The previous BFD config might help if it was working as intended. Also tracking down which socket is causing the errors would be very helpful (and if it happens to be Wireguard or such, the config and rough topology of it would be appreciated). Thanks and have a nice day, David -- – David Petera (he/him) | BIRD Tech Support | CZ.NIC, z.s.p.o.
Hello David, David Petera via Bird-users <bird-users@network.cz> writes:
have you made any revelations connected to this issue?
We have effectively turned off BFD on all BGP sessions as it seemed too random to be useful. It was working/not working on ... - iBGP session (short range, sub ms) - iBGP session (short range, sub ms, openwrt vs. alpine linux) - eBGP sessions (long range, 20-40ms latency)
Do I understand it correctly that the BGP sessions are up but the respective BFD sessions are down?
Correct.
I have encountered this kind of behavior when one side of the iBGP had been configured with 'direct' and the other was not, so maybe just double check if that is not the cause of the problem as well.
They are all direct in our case.
If not I would need additional information to be able to recreate it. What version of BIRD are you running? The previous BFD config might help if it was working as intended.
We are mainly running 2.15.1 in a container based on Alpine Linux. The openwrt version is actually the same: BIRD version 2.15.1
Also tracking down which socket is causing the errors would be very helpful (and if it happens to be Wireguard or such, the config and rough topology of it would be appreciated).
So I believe the socket issue stems from *multiple* bfd instances. This we solved in the end by having only *one* bfd {} block globally in all routers: -------------------------------------------------------------------------------- # Using BFD virtually everywhere, enable it globally protocol bfd { } ... bgp sessions following all the same pattern: protocol bgp ibgp_server141 { local as myas; neighbor 2a0a:e5c0:10:1::141 as myas; direct; bfd on; ipv6 { import filter both_default_routes; export filter static_and_bgp; gateway recursive; }; ipv4 { import filter both_default_routes; export filter static_and_bgp; gateway recursive; extended next hop on; }; } -------------------------------------------------------------------------------- We essentially generate the bgp block using helm charts and thus we can be sure that they are all the same (minus configured differences). Below is the example for ibgp that is probably most relevant: -------------------------------------------------------------------------------- {{- if $config.bird.iBGP.address }} {{- range $k, $v := $.Values.connections }} {{- if eq $v.bird.asn $config.bird.asn }} {{- if ne $k $.Values.localname }} {{- if $v.bird.iBGP.address }} protocol bgp ibgp_{{ $k }} { local as myas; neighbor {{ $v.bird.iBGP.address }} as myas; direct; ipv6 { {{- if $config.bird.iBGP.import_filter }} import filter {{ $config.bird.iBGP.import_filter }}; {{- else }} import all; {{- end }} {{- if $config.bird.iBGP.export_filter }} export filter {{ $config.bird.iBGP.export_filter }}; {{- else }} export filter static_and_bgp; {{- end }} gateway recursive; }; ipv4 { {{- if $config.bird.iBGP.import_filter }} import filter {{ $config.bird.iBGP.import_filter }}; {{- else }} import all; {{- end }} {{- if $config.bird.iBGP.export_filter }} export filter {{ $config.bird.iBGP.export_filter }}; {{- else }} export filter static_and_bgp; {{- end }} gateway recursive; extended next hop on; }; } -------------------------------------------------------------------------------- (note: the "bfd on;" block has been removed now). It's actually quite nice, we have one helm chart with one values.yaml that has a nice map of all connections of our AS'es in it. Automatic iBGP, manual eBGP. Best regards, Nico -- Sustainable and modern Infrastructures by ungleich.ch
participants (4)
-
David Petera -
Fran -
Nico Schottelius -
Ondrej Zajicek