[Babel-users] babeld slashes kernel route manipulation performance by 17000%

Daniel Gröber dxld at darkboxed.org
Thu Feb 24 00:13:48 GMT 2022


Hi Toke and Juliusz,

On Wed, Feb 23, 2022 at 09:43:29PM +0100, Toke Høiland-Jørgensen wrote:
> Probably because babeld subscribes to netlink notifications for all new
> routes, and only filters them on the table name fairly late,
> specifically here:
> 
> https://github.com/jech/babeld/blob/master/kernel_netlink.c#L1175

Thanks for the pointer, I figured it would be something like that but I'm
still surprised babled should be able to (seemingly) block the kernel from
processing other netlink messages but I haven't had the time to really
review the code yet properly yet.

I would have expected the kernel to just drop events when babled falls
behind with processing.

> So babeld will process and parse all route entries even if it won't
> export them.

Right, so I wonder if there is a way to let the kernel do the filtering
before passing events to babeld. Perhaps just making babled faster at
processing route updates would be a better solution though. Maybe I'll try
my hand at some profiling when I get a chance.

> implementation in Bird as well; that has no issues with running
> concurrently with a full BGP table. It is even possible to run babel and
> BGP in the same Bird instance, but I split mine out to two instances
> (one for BGP, one for Babel) because I had issues with the
> single-threaded nature of Bird causing Babel to miss hello updates while
> processing a large BGP update.

I am aware of the babel support in bird, but in my setup the whole point of
using babel is for the RTT metric support which bird doesn't seem to
support yet.

I had a look at FRR too since it supposedly does support RTT but according
to the babel homepage using it is discouraged. I was wondering if that is
still correct actually?

On Thu, Feb 24, 2022 at 12:55:01AM +0100, Juliusz Chroboczek wrote:
> > I run Bird in a similar setup as yours, BTW, but using the Babel
> > implementation in Bird
> 
> Just to clarify: there are two major implementations of Babel:
> 
>   - babeld, which is a research project, and was written over the years by
>     myself and a number of students, most of whom only stayed during an
>     internship before moving on;

> While I find babeld more convenient than BIRD, since it requires little
> configuration in many common cases, I recommend that people use BIRD in
> preference to babeld in production deployments.

Yeah like I said above I am using babeld because of the RTT metric support
otherwise I would have preferred bird :)

--Daniel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://alioth-lists.debian.net/pipermail/babel-users/attachments/20220224/f5acf800/attachment.sig>


More information about the Babel-users mailing list