One question: What changes (if any) are necessary for the protocols to
run in multithreaded mode? I wouldn't mind taking a look at adding
support to the Babel protocol if you'd be interested in taking patches
at this stage?

Simply, almost none compared to other changes inside BIRD. One of my
goals is to keep the protocols untouched if possible. What is needed, as
far as I can remember (list may be incomplete):

* check that there is no global variable inside Babel (including static
variables inside functions)
* check that nothing inside Babel touches directly any global data
structure and no quirk in Nest touches Babel directly
* check that all timers are stopped before protocol sets itself DOWN
(this won't be needed in future, maybe)
* in config.Y, request to run the protocol in its own loop
* set the SKF_THREAD flag for all sockets
* explicitly lock by birdloop_enter() and birdloop_leave() in CLI
commands like "show babel ..."

Thanks for the pointers!Those bits seem simple enough. The first two
items should be OK for Babel, the others need patches (but simple ones).

If you find anything too complicated or ugly, please let us know. It is intended to be simple. I suppose Babel is OK to fit into the current model "one thread per protocol instance". Multithreading inside one protocol is supported, yet it isn't much convenient for now.

For now, you can look at RPKI or BGP diff, anyway I'm going to write a
blogpost specifically about internal protocol API, where to lock and
how. Therefore, I think the most convenient time to do the Babel
patching will be after publishing that blogpost, if you don't mind
waiting.

I won't refuse patches now, yet I think the best approach is
postponing the work to the time when the blogpost is out and the API
gets its final shape and description. I estimate that time to several
months from now as there are some tasks (as described in my previous
email) with higher priority.

Right, let's see if I get around to playing with this before then. If I
do, I may open a pull request with the fixes to Babel; I don't mind
rebasing if you do end up changing the requirements along the way.

Fine, thank you!

Maria

Reply via email to