[PATCH] Netlink on FreeBSD support

Ondrej Zajicek santiago at crfreenet.org
Fri Dec 9 17:48:30 CET 2022


On Fri, Dec 02, 2022 at 09:21:17PM +0000, Alexander V. Chernikov wrote:
> > On 2 Dec 2022, at 03:19, Ondrej Zajicek via Bird-users <bird-users at trubka.network.cz> wrote:
> > 
> > On Thu, Dec 01, 2022 at 01:48:16PM +0000, Alexander V. Chernikov via Bird-users wrote:
> >> Dear bird developers,
> >> 
> >> Netlink support was added to FreeBSD recently [1].
> >> It’s not as “full-featured” as its Linux counterpart yet, however the added subset is enough to make a routing daemon work.
> >> Specifically, it supports multiple tables, multipath, nexthops and nexthops groups. No MPLS support yet.
> >> It aims to be compatible (whenever possible) to minimise the netlink users adoption efforts.
> >> The first FreeBSD releases to have netlink support will be 14.0 and 13.2. Both are planned to be released in ~Q1 2023.
> >> 
> >> The attached change adds 'bsd-netlink’ sysconf target, allowing to build both netlink & rtsock versions on FreeBSD.

Hi

Merged:
https://gitlab.nic.cz/labs/bird/-/commit/a80cd4707464cedb526eb72e7704b097af20beb7


> In FreeBSD, the default routing table is #0 and there are no special 25X tables.
> Some attributes (like RTA_PREFSRC) are not supported. Interface address flags are not fully mapped yet & there might be some unsupported stuff w.r.t IPv6 prefixes lifetime.
> “Prohibit” nexthops are not supported yet (as the kernel only provides blackhole / reject ATM).
> Resilient nexthop groups are not supported yet as well.
> 
> I may be missing something, but I’m pretty sure that the implementation is close to supporting all of the current bird features (except mpls).
> 
> > Like Linux keep (and Netlink API assumes) multiple routes with different
> > metric, and keeps source protocol.
> Yes, metrics & source protocol works.

Does source protocol also works with the native API (krt socket)?


> Also, speaking of features - FreeBSD netlink implementation is optimised for batching & there is significant performance difference between batched-and non-batched.
> Specifically, current bird code does ~80k routes/sec w/o netlink batching, ~180k routes/sec w/ rtsock and ~240k routes/sec w/ netlink batching (sz=16) on the same system.
> Would you be open to adopting a not-too-invasive netlink batching patch enabled conditionally under CONFIG_NETLINK_BATCHING ?

That seems like a good idea.

-- 
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