Bug: BFD confuses sessions with identical IPv6 link-local addresses

Ondrej Zajicek santiago at crfreenet.org
Wed Mar 7 15:42:19 CET 2018


On Sun, Mar 04, 2018 at 07:50:13PM +0100, Julian Brost wrote:
> Hi,
> 
> I just tried to enable BFD for some OSPF and BGP connections and ran
> into an issue which BFD sessions flapping up and down and Bird logging
> many messages like these:
> 
>   bfd1: Bad packet from fe80::2 - unknown session id (130079069)
>   bfd1: Bad packet from fe80::2 - unknown session id (3102513000)
>   bfd1: Bad packet from fe80::2 - unknown session id (3650438750)
>   bfd1: Bad packet from fe80::2 - unknown session id (1597034259)
> 
> This presumably happens due to this piece of code in bfd_rx_hook() in
> proto/bfd/packets.c:
> 
>   s = bfd_find_session_by_addr(p, sk->faddr);
> 
> I use fe80::1/fe80::2 as addresses for most of my IPv6 peering
> connections and sk->faddr is just a 128 bit value, so it contains no
> interface identifier, which likely leads to Bird confusing multiple BFD
> sessions.

Hi

Thanks for the bugreport. You are right, BFD sessions are dispatched just based
on source address regardless of interface, so it is confused by conflicting
link-local addresses. We will fix that, i would expect the same issue could
happen when conflicting private IPs are used in different VRFs.

-- 
Elen sila lumenn' omentielvo

Ondrej 'Santiago' Zajicek (email: santiago at crfreenet.org)
OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net)
"To err is human -- to blame it on a computer is even more so."



More information about the Bird-users mailing list