Subject: Bird3 - Establishing a BGP session over IPv6 LL addresses
Hi! I'm a member of the DN42 network, and I have a mikrotik router connected to it, I've only have 1 peer and I'm receiving over MP-BGP IPv4 and IPv6 prefixes. Also on the mikrotik I'm running a route-reflector. With my bird3 (3.2.0 from debian repo) instance I'm trying to connect to the route reflector over a couple of IPv6 LL addresses. But it doesn't seem to be working. This is my bird3 config: ``` router id 192.168.1.200; log "/var/log/bird/bird.log" all; protocol bgp mkt01_dn42_rr { description "mkt01 dn42 RR"; # local 192.168.1.200 as 64512; local fe80::42e2:30ff:fe60:edbb%wlp2s0 as 64512; # neighbor 192.168.1.201 as 64512; neighbor fe80::2805%wlp2s0 as 64512; interface "wlp2s0"; direct; strict bind yes; ipv4 { import all; }; ipv6 { import all; }; } protocol bmp { station address ip 127.0.0.1 port 5000; monitoring rib in pre_policy; monitoring rib in post_policy; } ``` After trying adding and removing params liks strict bind, interface, etc I was not able to land a configuration that finally worked. I must say that over IPv4 the session was established, but over IPv6 stills in Idle. Is anyone out there with a similar config? Any ideas why this happens? Regards, Lucas
Hi Lucas, I have some working bgp sessions over link-local addresses. Only that they are hand-configured, not automatic ones. And I have bird2, not bird3. My config is something like this: protocol bgp bgp_router_c6 { neighbor fe80::2 as 65000; local fe80::1 as 65000; interface "vlan100"; direct; strict bind yes; free bind yes; ipv6 { next hop keep; ... }; } "free bind" should not be necessary here, I think. Do you have "protocol device" in your config? Regards, Alexander Zubkov On Thu, Mar 26, 2026 at 8:21 PM Lucas da Vila <dev@ldv.ar> wrote:
Hi!
I'm a member of the DN42 network, and I have a mikrotik router connected to it, I've only have 1 peer and I'm receiving over MP-BGP IPv4 and IPv6 prefixes. Also on the mikrotik I'm running a route-reflector.
With my bird3 (3.2.0 from debian repo) instance I'm trying to connect to the route reflector over a couple of IPv6 LL addresses. But it doesn't seem to be working. This is my bird3 config:
``` router id 192.168.1.200;
log "/var/log/bird/bird.log" all;
protocol bgp mkt01_dn42_rr { description "mkt01 dn42 RR"; # local 192.168.1.200 as 64512; local fe80::42e2:30ff:fe60:edbb%wlp2s0 as 64512; # neighbor 192.168.1.201 as 64512; neighbor fe80::2805%wlp2s0 as 64512;
interface "wlp2s0"; direct; strict bind yes;
ipv4 { import all; };
ipv6 { import all; };
}
protocol bmp { station address ip 127.0.0.1 port 5000; monitoring rib in pre_policy; monitoring rib in post_policy; } ```
After trying adding and removing params liks strict bind, interface, etc I was not able to land a configuration that finally worked.
I must say that over IPv4 the session was established, but over IPv6 stills in Idle.
Is anyone out there with a similar config? Any ideas why this happens?
Regards, Lucas
Hi Alexander, I don't have a "protocol device" I was just hoping to receive the announcements from the RR a get the BMP output for analysis. Regards lucas On Thu, Mar 26, 2026, 16:46 Alexander Zubkov <green@qrator.net> wrote:
Hi Lucas,
I have some working bgp sessions over link-local addresses. Only that they are hand-configured, not automatic ones. And I have bird2, not bird3. My config is something like this:
protocol bgp bgp_router_c6 { neighbor fe80::2 as 65000; local fe80::1 as 65000; interface "vlan100"; direct; strict bind yes; free bind yes;
ipv6 { next hop keep; ... }; }
"free bind" should not be necessary here, I think. Do you have "protocol device" in your config?
Regards, Alexander Zubkov
On Thu, Mar 26, 2026 at 8:21 PM Lucas da Vila <dev@ldv.ar> wrote:
Hi!
I'm a member of the DN42 network, and I have a mikrotik router connected to it, I've only have 1 peer and I'm receiving over MP-BGP IPv4 and IPv6 prefixes. Also on the mikrotik I'm running a route-reflector.
With my bird3 (3.2.0 from debian repo) instance I'm trying to connect to the route reflector over a couple of IPv6 LL addresses. But it doesn't seem to be working. This is my bird3 config:
``` router id 192.168.1.200;
log "/var/log/bird/bird.log" all;
protocol bgp mkt01_dn42_rr { description "mkt01 dn42 RR"; # local 192.168.1.200 as 64512; local fe80::42e2:30ff:fe60:edbb%wlp2s0 as 64512; # neighbor 192.168.1.201 as 64512; neighbor fe80::2805%wlp2s0 as 64512;
interface "wlp2s0"; direct; strict bind yes;
ipv4 { import all; };
ipv6 { import all; };
}
protocol bmp { station address ip 127.0.0.1 port 5000; monitoring rib in pre_policy; monitoring rib in post_policy; } ```
After trying adding and removing params liks strict bind, interface, etc I was not able to land a configuration that finally worked.
I must say that over IPv4 the session was established, but over IPv6 stills in Idle.
Is anyone out there with a similar config? Any ideas why this happens?
Regards, Lucas
Hi Lucas, "protocol device" might be an issue, I think it's almost must-have for bgp. Because to establish the session bird needs to know interfaces and ip information. And that is supplied by "protocol device". https://bird.nic.cz/doc/bird-3.2.0.html#device Regards, Alexander On Thu, Mar 26, 2026 at 10:10 PM Lucas da Vila <dev@ldv.ar> wrote:
Hi Alexander,
I don't have a "protocol device" I was just hoping to receive the announcements from the RR a get the BMP output for analysis.
Regards lucas
On Thu, Mar 26, 2026, 16:46 Alexander Zubkov <green@qrator.net> wrote:
Hi Lucas,
I have some working bgp sessions over link-local addresses. Only that they are hand-configured, not automatic ones. And I have bird2, not bird3. My config is something like this:
protocol bgp bgp_router_c6 { neighbor fe80::2 as 65000; local fe80::1 as 65000; interface "vlan100"; direct; strict bind yes; free bind yes;
ipv6 { next hop keep; ... }; }
"free bind" should not be necessary here, I think. Do you have "protocol device" in your config?
Regards, Alexander Zubkov
On Thu, Mar 26, 2026 at 8:21 PM Lucas da Vila <dev@ldv.ar> wrote:
Hi!
I'm a member of the DN42 network, and I have a mikrotik router connected to it, I've only have 1 peer and I'm receiving over MP-BGP IPv4 and IPv6 prefixes. Also on the mikrotik I'm running a route-reflector.
With my bird3 (3.2.0 from debian repo) instance I'm trying to connect to the route reflector over a couple of IPv6 LL addresses. But it doesn't seem to be working. This is my bird3 config:
``` router id 192.168.1.200;
log "/var/log/bird/bird.log" all;
protocol bgp mkt01_dn42_rr { description "mkt01 dn42 RR"; # local 192.168.1.200 as 64512; local fe80::42e2:30ff:fe60:edbb%wlp2s0 as 64512; # neighbor 192.168.1.201 as 64512; neighbor fe80::2805%wlp2s0 as 64512;
interface "wlp2s0"; direct; strict bind yes;
ipv4 { import all; };
ipv6 { import all; };
}
protocol bmp { station address ip 127.0.0.1 port 5000; monitoring rib in pre_policy; monitoring rib in post_policy; } ```
After trying adding and removing params liks strict bind, interface, etc I was not able to land a configuration that finally worked.
I must say that over IPv4 the session was established, but over IPv6 stills in Idle.
Is anyone out there with a similar config? Any ideas why this happens?
Regards, Lucas
Well, at least over IPv4 it was not necessary to have a "direct" protocol. But I'll try Regards, Lucas On Thu, Mar 26, 2026, 18:28 Alexander Zubkov <green@qrator.net> wrote:
Hi Lucas,
"protocol device" might be an issue, I think it's almost must-have for bgp. Because to establish the session bird needs to know interfaces and ip information. And that is supplied by "protocol device". https://bird.nic.cz/doc/bird-3.2.0.html#device
Regards, Alexander
On Thu, Mar 26, 2026 at 10:10 PM Lucas da Vila <dev@ldv.ar> wrote:
Hi Alexander,
I don't have a "protocol device" I was just hoping to receive the announcements from the RR a get the BMP output for analysis.
Regards lucas
On Thu, Mar 26, 2026, 16:46 Alexander Zubkov <green@qrator.net> wrote:
Hi Lucas,
I have some working bgp sessions over link-local addresses. Only that they are hand-configured, not automatic ones. And I have bird2, not bird3. My config is something like this:
protocol bgp bgp_router_c6 { neighbor fe80::2 as 65000; local fe80::1 as 65000; interface "vlan100"; direct; strict bind yes; free bind yes;
ipv6 { next hop keep; ... }; }
"free bind" should not be necessary here, I think. Do you have "protocol device" in your config?
Regards, Alexander Zubkov
On Thu, Mar 26, 2026 at 8:21 PM Lucas da Vila <dev@ldv.ar> wrote:
Hi!
I'm a member of the DN42 network, and I have a mikrotik router connected to it, I've only have 1 peer and I'm receiving over MP-BGP IPv4 and IPv6 prefixes. Also on the mikrotik I'm running a route-reflector.
With my bird3 (3.2.0 from debian repo) instance I'm trying to connect to the route reflector over a couple of IPv6 LL addresses. But it doesn't seem to be working. This is my bird3 config:
``` router id 192.168.1.200;
log "/var/log/bird/bird.log" all;
protocol bgp mkt01_dn42_rr { description "mkt01 dn42 RR"; # local 192.168.1.200 as 64512; local fe80::42e2:30ff:fe60:edbb%wlp2s0 as 64512; # neighbor 192.168.1.201 as 64512; neighbor fe80::2805%wlp2s0 as 64512;
interface "wlp2s0"; direct; strict bind yes;
ipv4 { import all; };
ipv6 { import all; };
}
protocol bmp { station address ip 127.0.0.1 port 5000; monitoring rib in pre_policy; monitoring rib in post_policy; } ```
After trying adding and removing params liks strict bind, interface, etc I was not able to land a configuration that finally worked.
I must say that over IPv4 the session was established, but over IPv6 stills in Idle.
Is anyone out there with a similar config? Any ideas why this happens?
Regards, Lucas
Just for the note. "direct" and "device" - are different protocols. On Thu, Mar 26, 2026 at 11:21 PM Lucas da Vila <dev@ldv.ar> wrote:
Well, at least over IPv4 it was not necessary to have a "direct" protocol.
But I'll try
Regards, Lucas
On Thu, Mar 26, 2026, 18:28 Alexander Zubkov <green@qrator.net> wrote:
Hi Lucas,
"protocol device" might be an issue, I think it's almost must-have for bgp. Because to establish the session bird needs to know interfaces and ip information. And that is supplied by "protocol device". https://bird.nic.cz/doc/bird-3.2.0.html#device
Regards, Alexander
On Thu, Mar 26, 2026 at 10:10 PM Lucas da Vila <dev@ldv.ar> wrote:
Hi Alexander,
I don't have a "protocol device" I was just hoping to receive the announcements from the RR a get the BMP output for analysis.
Regards lucas
On Thu, Mar 26, 2026, 16:46 Alexander Zubkov <green@qrator.net> wrote:
Hi Lucas,
I have some working bgp sessions over link-local addresses. Only that they are hand-configured, not automatic ones. And I have bird2, not bird3. My config is something like this:
protocol bgp bgp_router_c6 { neighbor fe80::2 as 65000; local fe80::1 as 65000; interface "vlan100"; direct; strict bind yes; free bind yes;
ipv6 { next hop keep; ... }; }
"free bind" should not be necessary here, I think. Do you have "protocol device" in your config?
Regards, Alexander Zubkov
On Thu, Mar 26, 2026 at 8:21 PM Lucas da Vila <dev@ldv.ar> wrote:
Hi!
I'm a member of the DN42 network, and I have a mikrotik router connected to it, I've only have 1 peer and I'm receiving over MP-BGP IPv4 and IPv6 prefixes. Also on the mikrotik I'm running a route-reflector.
With my bird3 (3.2.0 from debian repo) instance I'm trying to connect to the route reflector over a couple of IPv6 LL addresses. But it doesn't seem to be working. This is my bird3 config:
``` router id 192.168.1.200;
log "/var/log/bird/bird.log" all;
protocol bgp mkt01_dn42_rr { description "mkt01 dn42 RR"; # local 192.168.1.200 as 64512; local fe80::42e2:30ff:fe60:edbb%wlp2s0 as 64512; # neighbor 192.168.1.201 as 64512; neighbor fe80::2805%wlp2s0 as 64512;
interface "wlp2s0"; direct; strict bind yes;
ipv4 { import all; };
ipv6 { import all; };
}
protocol bmp { station address ip 127.0.0.1 port 5000; monitoring rib in pre_policy; monitoring rib in post_policy; } ```
After trying adding and removing params liks strict bind, interface, etc I was not able to land a configuration that finally worked.
I must say that over IPv4 the session was established, but over IPv6 stills in Idle.
Is anyone out there with a similar config? Any ideas why this happens?
Regards, Lucas
Alexander! The protocol "device" was the clue to get an established session! Thanks! Best regards Lucas On Thu, Mar 26, 2026, 20:22 Alexander Zubkov <green@qrator.net> wrote:
Just for the note. "direct" and "device" - are different protocols.
On Thu, Mar 26, 2026 at 11:21 PM Lucas da Vila <dev@ldv.ar> wrote:
Well, at least over IPv4 it was not necessary to have a "direct" protocol.
But I'll try
Regards, Lucas
On Thu, Mar 26, 2026, 18:28 Alexander Zubkov <green@qrator.net> wrote:
Hi Lucas,
"protocol device" might be an issue, I think it's almost must-have for bgp. Because to establish the session bird needs to know interfaces and ip information. And that is supplied by "protocol device". https://bird.nic.cz/doc/bird-3.2.0.html#device
Regards, Alexander
On Thu, Mar 26, 2026 at 10:10 PM Lucas da Vila <dev@ldv.ar> wrote:
Hi Alexander,
I don't have a "protocol device" I was just hoping to receive the announcements from the RR a get the BMP output for analysis.
Regards lucas
On Thu, Mar 26, 2026, 16:46 Alexander Zubkov <green@qrator.net> wrote:
Hi Lucas,
I have some working bgp sessions over link-local addresses. Only that they are hand-configured, not automatic ones. And I have bird2, not bird3. My config is something like this:
protocol bgp bgp_router_c6 { neighbor fe80::2 as 65000; local fe80::1 as 65000; interface "vlan100"; direct; strict bind yes; free bind yes;
ipv6 { next hop keep; ... }; }
"free bind" should not be necessary here, I think. Do you have "protocol device" in your config?
Regards, Alexander Zubkov
On Thu, Mar 26, 2026 at 8:21 PM Lucas da Vila <dev@ldv.ar> wrote:
Hi!
I'm a member of the DN42 network, and I have a mikrotik router connected to it, I've only have 1 peer and I'm receiving over MP-BGP IPv4 and IPv6 prefixes. Also on the mikrotik I'm running a route-reflector.
With my bird3 (3.2.0 from debian repo) instance I'm trying to connect to the route reflector over a couple of IPv6 LL addresses. But it doesn't seem to be working. This is my bird3 config:
``` router id 192.168.1.200;
log "/var/log/bird/bird.log" all;
protocol bgp mkt01_dn42_rr { description "mkt01 dn42 RR"; # local 192.168.1.200 as 64512; local fe80::42e2:30ff:fe60:edbb%wlp2s0 as 64512; # neighbor 192.168.1.201 as 64512; neighbor fe80::2805%wlp2s0 as 64512;
interface "wlp2s0"; direct; strict bind yes;
ipv4 { import all; };
ipv6 { import all; };
}
protocol bmp { station address ip 127.0.0.1 port 5000; monitoring rib in pre_policy; monitoring rib in post_policy; } ```
After trying adding and removing params liks strict bind, interface, etc I was not able to land a configuration that finally worked.
I must say that over IPv4 the session was established, but over IPv6 stills in Idle.
Is anyone out there with a similar config? Any ideas why this happens?
Regards, Lucas
Hi Lucas, just FYI the BMP protocol is kinda broken in v3.2, but we will release fixup version v3.2.1 (and 3.1.6) in a week. If you wanted to try the fixes before the release you can download the package for you distro from the artifacts in our CI pipeline. https://gitlab.nic.cz/labs/bird/-/pipelines/153438 Happy routing, David David Petera (he/him) | BIRD Tech Support | CZ.NIC, z.s.p.o. On 3/26/26 22:10, Lucas da Vila wrote:
Hi Alexander,
I don't have a "protocol device" I was just hoping to receive the announcements from the RR a get the BMP output for analysis.
Regards lucas
On Thu, Mar 26, 2026, 16:46 Alexander Zubkov <green@qrator.net> wrote:
Hi Lucas,
I have some working bgp sessions over link-local addresses. Only that they are hand-configured, not automatic ones. And I have bird2, not bird3. My config is something like this:
protocol bgp bgp_router_c6 { neighbor fe80::2 as 65000; local fe80::1 as 65000; interface "vlan100"; direct; strict bind yes; free bind yes;
ipv6 { next hop keep; ... }; }
"free bind" should not be necessary here, I think. Do you have "protocol device" in your config?
Regards, Alexander Zubkov
On Thu, Mar 26, 2026 at 8:21 PM Lucas da Vila <dev@ldv.ar> wrote:
Hi!
I'm a member of the DN42 network, and I have a mikrotik router connected to it, I've only have 1 peer and I'm receiving over MP-BGP IPv4 and IPv6 prefixes. Also on the mikrotik I'm running a route-reflector.
With my bird3 (3.2.0 from debian repo) instance I'm trying to connect to the route reflector over a couple of IPv6 LL addresses. But it doesn't seem to be working. This is my bird3 config:
``` router id 192.168.1.200;
log "/var/log/bird/bird.log" all;
protocol bgp mkt01_dn42_rr { description "mkt01 dn42 RR"; # local 192.168.1.200 as 64512; local fe80::42e2:30ff:fe60:edbb%wlp2s0 as 64512; # neighbor 192.168.1.201 as 64512; neighbor fe80::2805%wlp2s0 as 64512;
interface "wlp2s0"; direct; strict bind yes;
ipv4 { import all; };
ipv6 { import all; };
}
protocol bmp { station address ip 127.0.0.1 port 5000; monitoring rib in pre_policy; monitoring rib in post_policy; } ```
After trying adding and removing params liks strict bind, interface, etc I was not able to land a configuration that finally worked.
I must say that over IPv4 the session was established, but over IPv6 stills in Idle.
Is anyone out there with a similar config? Any ideas why this happens?
Regards, Lucas
Thanks David! Good to know. I'll try to test the new version when it's available. I'm no expert with BMP but it seemed odd to me that the received data (with pmacct) was not really insightful. Best regards, Lucas On Tue, Mar 31, 2026 at 10:15 AM David Petera via Bird-users < bird-users@network.cz> wrote:
Hi Lucas,
just FYI the BMP protocol is kinda broken in v3.2, but we will release fixup version v3.2.1 (and 3.1.6) in a week.
If you wanted to try the fixes before the release you can download the package for you distro from the artifacts in our CI pipeline. https://gitlab.nic.cz/labs/bird/-/pipelines/153438
Happy routing, David
David Petera (he/him) | BIRD Tech Support | CZ.NIC, z.s.p.o.
On 3/26/26 22:10, Lucas da Vila wrote:
Hi Alexander,
I don't have a "protocol device" I was just hoping to receive the announcements from the RR a get the BMP output for analysis.
Regards lucas
On Thu, Mar 26, 2026, 16:46 Alexander Zubkov <green@qrator.net> wrote:
Hi Lucas,
I have some working bgp sessions over link-local addresses. Only that they are hand-configured, not automatic ones. And I have bird2, not bird3. My config is something like this:
protocol bgp bgp_router_c6 { neighbor fe80::2 as 65000; local fe80::1 as 65000; interface "vlan100"; direct; strict bind yes; free bind yes;
ipv6 { next hop keep; ... }; }
"free bind" should not be necessary here, I think. Do you have "protocol device" in your config?
Regards, Alexander Zubkov
On Thu, Mar 26, 2026 at 8:21 PM Lucas da Vila <dev@ldv.ar> wrote:
Hi!
I'm a member of the DN42 network, and I have a mikrotik router connected to it, I've only have 1 peer and I'm receiving over MP-BGP IPv4 and IPv6 prefixes. Also on the mikrotik I'm running a route-reflector.
With my bird3 (3.2.0 from debian repo) instance I'm trying to connect to the route reflector over a couple of IPv6 LL addresses. But it doesn't seem to be working. This is my bird3 config:
``` router id 192.168.1.200;
log "/var/log/bird/bird.log" all;
protocol bgp mkt01_dn42_rr { description "mkt01 dn42 RR"; # local 192.168.1.200 as 64512; local fe80::42e2:30ff:fe60:edbb%wlp2s0 as 64512; # neighbor 192.168.1.201 as 64512; neighbor fe80::2805%wlp2s0 as 64512;
interface "wlp2s0"; direct; strict bind yes;
ipv4 { import all; };
ipv6 { import all; };
}
protocol bmp { station address ip 127.0.0.1 port 5000; monitoring rib in pre_policy; monitoring rib in post_policy; } ```
After trying adding and removing params liks strict bind, interface, etc I was not able to land a configuration that finally worked.
I must say that over IPv4 the session was established, but over IPv6 stills in Idle.
Is anyone out there with a similar config? Any ideas why this happens?
Regards, Lucas
participants (3)
-
Alexander Zubkov -
David Petera -
Lucas da Vila