BIRD 3.0-alpha0
Maria Matejka
maria.matejka at nic.cz
Thu May 26 22:52:19 CEST 2022
Hello!
On 5/26/22 3:48 PM, Douglas Fischer wrote:
> Hello all!
>
> Any news from the front of version 3?
TL;DR: We're working on it, there is a lot of heavy lifting done and
another lot of heavy lifting still to be done.
You can also watch my RIPE 84 talk from last week here:
https://ripe84.ripe.net/archives/video/748/
DISCLAIMER: We don'ŧ promise anything specific, this is a work in
progress and may change without any notice. I'm writing this summary not
only for you (and the list) to know what is in the queue, but primarily
for myself to have something for future to look behind and roll on the
floor laughing how naïve I was in May 2022. And also to remind myself
that I should first write down all the planned work before really
estimating the time needed.
Anyway, here is the current state dump, written from my perspective.
Once upon a time, there was a version 3.0-alpha0 which has been released
and found broken soon afterwards. It has three major flaws which we know
about right now:
1. it can't be easily merged with version 2.0.9
(I tried to do it, believe me, it is impossible.)
1A. so let's create the next version 3 by merging its commits into 2.0.9
by short intervals and fix what is broken by these merges [IN PROGRESS]
1B. something in the original branch looks weird, let's do it better as
we now know the goal better [IN PROGRESS]
1C. some of these changes deserve to be merged back into the 2.0.x
branch to avoid future merge conflicts [IN PROGRESS]
1D. oops, now there is the commit with original import/export table
rework which I don't want to merge at all [jump to 3].
1E. dozens of following commits to be merged and fixed [PENDING]
2. MRT dumps are insecure and will crash your BIRD [PENDING]
(Found out during some internal team call after the release.)
2A. needs a special service layer
2B. this has to wait until tables are properly threaded
2C. it is better to wait for BMP to be merged to do multithreading of
both of these monitoring services at once
3. calling ROA check from a filter in 'show route' crashes BIRD.
(Reported by DE-CIX soon after release. Thanks for testing!)
3A. this is due to lock ordering violation
3B. we wanted to rework the show route anyway to not lock the table
while formatting the route, so let's do it [PENDING]
3C. but there is also a significant performance problem in channel
auxiliary tables (import / export) – the original rework made them more
of a full-size table, which adds lots of unwanted overhead [PENDING]
3D. in fact, the import table may be done by storing the pre-filter
route attributes "under" the actual attributes; filter modifications
would create an overlay over the original route attributes [PENDING]
3E. the export table also deserves some rework and it would help
performance a lot [PENDING]
3F. well, it would be less work in total to first do the import / export
table rework and then the show-route rework [PENDING]
3G. the current route attribute implementation is a two-layer mess
originating in version 1 where everything was an IP route, let's squash
these into one layer [IN PROGRESS]
3H. also the nexthop resolving procedures and flowspec validation
procedures kinda suck, let's make them more obvious, transparent and
thread-friendly [IN PROGRESS]
3I. well, also the current "extended" attribute layer doesn't scale
well, let's fix it [IN PROGRESS]
3J. and finally also the type-value structures are different in filters
and attributes, let's fix it [IN PROGRESS]
The appropriate branches are (named in a weird way, as common):
* haugesund --> this should become the -alpha1, shouldn't rebase
* haugesund-to-2.0 --> this should merge into 2.0.x soon, code review
and other feedback pending, rebases may occur when some bug is found to
fix the original commit rather than adding a fix commit
* haugesund-types --> here the 3A-3J is being done, it is my working
branch and it receives rebases every other day
It's quite a lot of work but still just a little compared to the amount
of work needed before to get -alpha0 to release. Most of the tasks
depend on the previous ones deeply so it will still take several weeks
until something can be offloaded. For now, these branches are quite a
one-woman-show (I don't like that).
Out of the spotlight, Santiago has fixed several bugs in v2.0.9 and
there may be v2.0.10 fixing these bugs soon. He's also preparing BMP to
be merged for v2.0.11, AFAIK.
I hope you aren't too scared by all of this. There is just some
technological debt and quirky implementations of later features and
after releasing 3.0-alpha1, I hope for no more major flaws.
Live then happily ever after!
Maria
More information about the Bird-users
mailing list