> On 2 Dec 2022, at 03:19, Ondrej Zajicek via Bird-users 
> <[email protected]> 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
> 
> That looks interesting. It does not interefere with working code for
> Linux or BSD, so we can merge it immediately without much issues. Are
> there any significant differenences between Netlink model and BSD kernel?
It depends on what’s deemed significant. Core concepts maps nicely.
There are some implementation nuances, of course.
The biggest I can name is the routing table IDs mismatch.
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.


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 ?
> 
> -- 
> Elen sila lumenn' omentielvo
> 
> Ondrej 'Santiago' Zajicek (email: [email protected])
> OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net)
> "To err is human -- to blame it on a computer is even more so."
> 


Reply via email to