BIRD 3.2.1, 3.1.6, 2.18.1, and 2.17.4 released
Dear BIRD Users, it's been quite a while but we have released BIRD versions 3.2.1, 3.1.6, 2.18.1, and 2.17.4. Yes, all of these. We got a lot of bugreports, not only through the users list but also privately. Thank you all so much for them. The download link is, as always: https://bird.nic.cz/get-bird/ There is the ASPA fix you are waiting for, fixing broken downstream validation. Thanks for reporting and contributing; that was a stupid mistake. More on that hopefully at RIPE 92 in Edinburgh. Also in all released versions, there are: - bugfixes for `krt_congctl` attribute handling - logrotate file size limit lower bound (16k) - a bunch of CI updates For LTS 3.1.6 and 2.17.4, we also included fixes of BGP reconfiguration which are already in 3.2.x and 2.18.x. And then there is much more fixed in BIRD 3 alone: - logrotate crash fix - ROA check crash fix (strangely manifesting mostly when manipulating ASPA checks in filters) - graceful recovery fix (now it doesn't crash when recovery is done) - BGP route refresh request fix (now it works even after session flap) - BMP (now it actually sends routes) - rare pipe collision bug - BGP dynamic instance crash fix (3.2.1 only) - keyword redefinition allowed again (3.2.1 only) We did what we could to keep track of everything. If you reported something between 3.2 and 2.18 was released, and March 31, 2026, it should be included in this release. Yet, we may have missed something, and also while we did our best to cover all reported bugs by automatic tests, we would still love if you found some time to check that on your side and report both positive and negative outcomes. Also it looks like there are already some new bugreports. We'll try to pick them up as soon as possible. In parallel, we are also preparing a next minor (feature) release. Although the only merged feature is now RAdv neighbor discovery with BGP autoconnect, we also expect to include the `oz-evpn` branch (for both BIRD 2 and 3) and a bunch of BGP export memory optimization updates for BIRD 3. Thank you all again for all your reports, contributions, patience and efforts. Happy routing! Maria and the BIRD Team -- Maria Matejka (she/her) | BIRD Team Leader | CZ.NIC, z.s.p.o.
Hello Maria! Hello everyone! Thank you all for your efforts! As far as possible, I will conduct practical tests within the scenarios where I use BIRD. I was reviewing the roadmap file in docs: https://gitlab.nic.cz/labs/bird/-/blob/v3.2.1/doc/roadmap.md https://gitlab.nic.cz/labs/bird/-/blob/v3.1.6/doc/roadmap.md https://gitlab.nic.cz/labs/bird/-/blob/v2.18.1/doc/roadmap.md https://gitlab.nic.cz/labs/bird/-/blob/v2.17.4/doc/roadmap.md And I believe that roadmap.md is feeling a bit lonely. At least, the "Planned for 2025" is looking at me with sad eyes. Rsrsrs I'm not sure if my line of reasoning is correct: But I imagine support for new features isn't a priority in version 2.X.X. It only comes into play under specific demands or when the code for tha feature in 3.X.X fits almost perfectly into 2.X.X. Does that make sense? Considering the large number of recent RFCs that are somehow covered for the scope of the BIRD, would you consider providing a more detailed overview of the annual or semi-annual plan? And to finish... I'm still eagerly awaiting the continuation of those stories about how the transition process from Bird 2 to Bird 3 was and is going. Em dom., 5 de abr. de 2026 às 16:16, Maria Matejka via Bird-users < bird-users@network.cz> escreveu:
Dear BIRD Users,
it’s been quite a while but we have released BIRD versions 3.2.1, 3.1.6, 2.18.1, and 2.17.4. Yes, all of these. We got a lot of bugreports, not only through the users list but also privately. Thank you all so much for them.
The download link is, as always: https://bird.nic.cz/get-bird/
There is the ASPA fix you are waiting for, fixing broken downstream validation. Thanks for reporting and contributing; that was a stupid mistake. More on that hopefully at RIPE 92 in Edinburgh.
Also in all released versions, there are:
- bugfixes for krt_congctl attribute handling - logrotate file size limit lower bound (16k) - a bunch of CI updates
For LTS 3.1.6 and 2.17.4, we also included fixes of BGP reconfiguration which are already in 3.2.x and 2.18.x.
And then there is much more fixed in BIRD 3 alone:
- logrotate crash fix - ROA check crash fix (strangely manifesting mostly when manipulating ASPA checks in filters) - graceful recovery fix (now it doesn’t crash when recovery is done) - BGP route refresh request fix (now it works even after session flap) - BMP (now it actually sends routes) - rare pipe collision bug - BGP dynamic instance crash fix (3.2.1 only) - keyword redefinition allowed again (3.2.1 only)
We did what we could to keep track of everything. If you reported something between 3.2 and 2.18 was released, and March 31, 2026, it should be included in this release. Yet, we may have missed something, and also while we did our best to cover all reported bugs by automatic tests, we would still love if you found some time to check that on your side and report both positive and negative outcomes.
Also it looks like there are already some new bugreports. We’ll try to pick them up as soon as possible.
In parallel, we are also preparing a next minor (feature) release. Although the only merged feature is now RAdv neighbor discovery with BGP autoconnect, we also expect to include the oz-evpn branch (for both BIRD 2 and 3) and a bunch of BGP export memory optimization updates for BIRD 3.
Thank you all again for all your reports, contributions, patience and efforts.
Happy routing! Maria and the BIRD Team
– Maria Matejka (she/her) | BIRD Team Leader | CZ.NIC, z.s.p.o.
-- Douglas Fernando Fischer Engº de Controle e Automação
Hello Maria, thanks for the release. I was wondering whether there will be some Easter egg in it. I believe I found one :) On 05/04/2026 21:10, Maria Matejka via Bird-users wrote:
There is the ASPA fix you are waiting for, fixing broken downstream validation. Thanks for reporting and contributing; that was a stupid mistake. More on that hopefully at RIPE 92 in Edinburgh.
Looking forward for that presentation. I tried downstream ASPA validation in BIRD 3.2.1. The good news is that it does not mark valid or unknown paths as invalid. The not so good news is that is marks some unknown paths as valid. I peeked into the source code again and thanks to the extensive documentation, it is obvious where the error is and why it manifests on paths like this one: 1.1.1.0/24 unicast [peer_as3333_eqix3_v4 2026-04-07] * (100) [AS13335i] bgp_path: 3333 13335 valid_roa: 1 valid_aspa: 1 There is no ASPA for either of the ASNs, so the algorithm ends with min_up = 1 and min_down = 0 as it is the untouched initial state. This means that the condition (min_up <= min_down + !force_upstream) is fulfilled and path is considered valid. At least this kind of error is pretty harmless for the time being, it only skews the statistics a bit. -- Best regards, Ondřej Caletka
Hello Ondřej,
On 05/04/2026 21:10, Maria Matejka via Bird-users wrote:
There is the ASPA fix you are waiting for, fixing broken downstream validation. Thanks for reporting and contributing; that was a stupid mistake. More on that hopefully at RIPE 92 in Edinburgh.
Looking forward for that presentation.
I hope that it's gonna be a banger.
The not so good news is that is marks some unknown paths as valid. I peeked into the source code again and thanks to the extensive documentation, it is obvious where the error is and why it manifests on paths like this one:
1.1.1.0/24 unicast [peer_as3333_eqix3_v4 2026-04-07] * (100) [AS13335i] bgp_path: 3333 13335 valid_roa: 1 valid_aspa: 1
I'm very convinced that this is indeed downstream valid. It's upstream unknown for sure if none has ASPA signed, but downstream definitely valid. These two ASNs are the two apexes and it may be just a lateral peering between them. Actually, by definition, all 2-ASN paths should be downstream valid, as both min_down_ramp and min_up_ramp are at least one, which sums to 2. I hope this makes sense. Thank you for checking! Maria -- Maria Matejka (she/her) | BIRD Team Leader | CZ.NIC, z.s.p.o.
Thanks! This release appears to be materially more stable than earlier 3.X.Y releases! I did manage to hit Assertion '!obstacle_target_count(&c->obstacles)' failed at conf/conf.c:209 after some extended runtime. I have a coredump but the bt is (gdb) thread apply all bt Thread 4 (Thread 0x7ff5f689c6c0 (LWP 327796)): .. #4 0x000055ccd4a1c476 in poll (__fds=<optimized out>, __nfds=<optimized out>, __timeout=144) at /usr/include/x86_64-linux-gnu/bits/poll2.h:44 #5 bird_thread_main (arg=0x55ccde4d70b0) at sysdep/unix/io-loop.c:1044 .. Thread 3 (Thread 0x7ff5f709d6c0 (LWP 327795)): .. #4 0x000055ccd4a1c476 in poll (__fds=<optimized out>, __nfds=<optimized out>, __timeout=314) at /usr/include/x86_64-linux-gnu/bits/poll2.h:44 #5 bird_thread_main (arg=0x55ccde4d68a0) at sysdep/unix/io-loop.c:1044 .. Thread 2 (Thread 0x7ff5f605b6c0 (LWP 327797)): .. #4 0x000055ccd4a1c476 in poll (__fds=<optimized out>, __nfds=<optimized out>, __timeout=3) at /usr/include/x86_64-linux-gnu/bits/poll2.h:44 #5 bird_thread_main (arg=0x55ccde4ea070) at sysdep/unix/io-loop.c:1044 .. Thread 1 (Thread 0x7ff5f7a87e00 (LWP 327793)): #0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44 #1 0x00007ff5f7bf59ff in __pthread_kill_internal (threadid=<optimized out>, signo=6) at ./nptl/pthread_kill.c:89 #2 0x00007ff5f7ba0cc2 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26 #3 0x00007ff5f7b894ac in __GI_abort () at ./stdlib/abort.c:77 #4 0x000055ccd4a2118c in bug (msg=msg@entry=0x55ccd4a320d0 "Assertion '%s' failed at %s:%d") at sysdep/unix/log.c:442 #5 0x000055ccd493aeca in config_free (c=0x7ff5ec07d030) at conf/conf.c:209 #6 config_free (c=0x7ff5ec07d030) at conf/conf.c:203 #7 0x000055ccd493b2ca in config_do_commit (cr=cr@entry=0x7ffeb5bc4ff0, type=type@entry=1) at conf/conf.c:302 #8 0x000055ccd493b67e in config_done () at conf/conf.c:380 #9 0x000055ccd4968c8c in ev_run_list_limited (l=0x55ccd4ab0598 <main_birdloop+216>, limit=4294967294, limit@entry=4294967295) at lib/event.c:338 #10 0x000055ccd4a16378 in io_loop () at sysdep/unix/io.c:2646 #11 0x000055ccd4925325 in main (argc=<optimized out>, argv=<optimized out>) at sysdep/unix/main.c:1111 On 4/5/26 3:10 PM, Maria Matejka via Bird-users wrote:
Dear BIRD Users,
it’s been quite a while but we have released BIRD versions 3.2.1, 3.1.6, 2.18.1, and 2.17.4. Yes, all of these. We got a lot of bugreports, not only through the users list but also privately. Thank you all so much for them.
The download link is, as always: https://bird.nic.cz/get-bird/
There is the ASPA fix you are waiting for, fixing broken downstream validation. Thanks for reporting and contributing; that was a stupid mistake. More on that hopefully at RIPE 92 in Edinburgh.
Also in all released versions, there are:
* bugfixes for |krt_congctl| attribute handling * logrotate file size limit lower bound (16k) * a bunch of CI updates
For LTS 3.1.6 and 2.17.4, we also included fixes of BGP reconfiguration which are already in 3.2.x and 2.18.x.
And then there is much more fixed in BIRD 3 alone:
* logrotate crash fix * ROA check crash fix (strangely manifesting mostly when manipulating ASPA checks in filters) * graceful recovery fix (now it doesn’t crash when recovery is done) * BGP route refresh request fix (now it works even after session flap) * BMP (now it actually sends routes) * rare pipe collision bug * BGP dynamic instance crash fix (3.2.1 only) * keyword redefinition allowed again (3.2.1 only)
We did what we could to keep track of everything. If you reported something between 3.2 and 2.18 was released, and March 31, 2026, it should be included in this release. Yet, we may have missed something, and also while we did our best to cover all reported bugs by automatic tests, we would still love if you found some time to check that on your side and report both positive and negative outcomes.
Also it looks like there are already some new bugreports. We’ll try to pick them up as soon as possible.
In parallel, we are also preparing a next minor (feature) release. Although the only merged feature is now RAdv neighbor discovery with BGP autoconnect, we also expect to include the |oz-evpn| branch (for both BIRD 2 and 3) and a bunch of BGP export memory optimization updates for BIRD 3.
Thank you all again for all your reports, contributions, patience and efforts.
Happy routing! Maria and the BIRD Team
– Maria Matejka (she/her) | BIRD Team Leader | CZ.NIC, z.s.p.o.
Hi Matt, thanks for the report. With which version did this happen exactly? v3.2.1 or v3.1.6? Could you maybe sent me off list core file, exact binary and logs just before the crash if you have some? That would help us a lot. Best regards and happy routing! David David Petera (he/him) | BIRD Tech Support | CZ.NIC, z.s.p.o. On 4/21/26 03:50, Matt Corallo wrote:
Thanks! This release appears to be materially more stable than earlier 3.X.Y releases!
I did manage to hit Assertion '!obstacle_target_count(&c->obstacles)' failed at conf/conf.c:209 after some extended runtime. I have a coredump but the bt is
(gdb) thread apply all bt Thread 4 (Thread 0x7ff5f689c6c0 (LWP 327796)): .. #4 0x000055ccd4a1c476 in poll (__fds=<optimized out>, __nfds=<optimized out>, __timeout=144) at /usr/include/x86_64-linux-gnu/bits/poll2.h:44 #5 bird_thread_main (arg=0x55ccde4d70b0) at sysdep/unix/io-loop.c:1044 ..
Thread 3 (Thread 0x7ff5f709d6c0 (LWP 327795)): .. #4 0x000055ccd4a1c476 in poll (__fds=<optimized out>, __nfds=<optimized out>, __timeout=314) at /usr/include/x86_64-linux-gnu/bits/poll2.h:44 #5 bird_thread_main (arg=0x55ccde4d68a0) at sysdep/unix/io-loop.c:1044 ..
Thread 2 (Thread 0x7ff5f605b6c0 (LWP 327797)): .. #4 0x000055ccd4a1c476 in poll (__fds=<optimized out>, __nfds=<optimized out>, __timeout=3) at /usr/include/x86_64-linux-gnu/bits/poll2.h:44 #5 bird_thread_main (arg=0x55ccde4ea070) at sysdep/unix/io-loop.c:1044 ..
Thread 1 (Thread 0x7ff5f7a87e00 (LWP 327793)): #0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44 #1 0x00007ff5f7bf59ff in __pthread_kill_internal (threadid=<optimized out>, signo=6) at ./nptl/pthread_kill.c:89 #2 0x00007ff5f7ba0cc2 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26 #3 0x00007ff5f7b894ac in __GI_abort () at ./stdlib/abort.c:77 #4 0x000055ccd4a2118c in bug (msg=msg@entry=0x55ccd4a320d0 "Assertion '%s' failed at %s:%d") at sysdep/unix/log.c:442 #5 0x000055ccd493aeca in config_free (c=0x7ff5ec07d030) at conf/conf.c:209 #6 config_free (c=0x7ff5ec07d030) at conf/conf.c:203 #7 0x000055ccd493b2ca in config_do_commit (cr=cr@entry=0x7ffeb5bc4ff0, type=type@entry=1) at conf/conf.c:302 #8 0x000055ccd493b67e in config_done () at conf/conf.c:380 #9 0x000055ccd4968c8c in ev_run_list_limited (l=0x55ccd4ab0598 <main_birdloop+216>, limit=4294967294, limit@entry=4294967295) at lib/event.c:338 #10 0x000055ccd4a16378 in io_loop () at sysdep/unix/io.c:2646 #11 0x000055ccd4925325 in main (argc=<optimized out>, argv=<optimized out>) at sysdep/unix/main.c:1111
On 4/5/26 3:10 PM, Maria Matejka via Bird-users wrote:
Dear BIRD Users,
it’s been quite a while but we have released BIRD versions 3.2.1, 3.1.6, 2.18.1, and 2.17.4. Yes, all of these. We got a lot of bugreports, not only through the users list but also privately. Thank you all so much for them.
The download link is, as always: https://bird.nic.cz/get-bird/
There is the ASPA fix you are waiting for, fixing broken downstream validation. Thanks for reporting and contributing; that was a stupid mistake. More on that hopefully at RIPE 92 in Edinburgh.
Also in all released versions, there are:
* bugfixes for |krt_congctl| attribute handling * logrotate file size limit lower bound (16k) * a bunch of CI updates
For LTS 3.1.6 and 2.17.4, we also included fixes of BGP reconfiguration which are already in 3.2.x and 2.18.x.
And then there is much more fixed in BIRD 3 alone:
* logrotate crash fix * ROA check crash fix (strangely manifesting mostly when manipulating ASPA checks in filters) * graceful recovery fix (now it doesn’t crash when recovery is done) * BGP route refresh request fix (now it works even after session flap) * BMP (now it actually sends routes) * rare pipe collision bug * BGP dynamic instance crash fix (3.2.1 only) * keyword redefinition allowed again (3.2.1 only)
We did what we could to keep track of everything. If you reported something between 3.2 and 2.18 was released, and March 31, 2026, it should be included in this release. Yet, we may have missed something, and also while we did our best to cover all reported bugs by automatic tests, we would still love if you found some time to check that on your side and report both positive and negative outcomes.
Also it looks like there are already some new bugreports. We’ll try to pick them up as soon as possible.
In parallel, we are also preparing a next minor (feature) release. Although the only merged feature is now RAdv neighbor discovery with BGP autoconnect, we also expect to include the |oz-evpn| branch (for both BIRD 2 and 3) and a bunch of BGP export memory optimization updates for BIRD 3.
Thank you all again for all your reports, contributions, patience and efforts.
Happy routing! Maria and the BIRD Team
– Maria Matejka (she/her) | BIRD Team Leader | CZ.NIC, z.s.p.o.
participants (5)
-
David Petera -
Douglas Fischer -
Maria Matejka -
Matt Corallo -
Ondřej Caletka