Question about babel over bird
Hello: We have a series of wireless antennas deployed in mesh with the babel protocol using bird. Two of those antennas advertise the route 10.0.0.0/8. The rest of the antennas choose one of the two outputs depending on the babel protocol. How can I force it to go out through one or the other exit? Thanks Oriol
Oriol Rico <oriol.rico@gmail.com> writes:
Hello: We have a series of wireless antennas deployed in mesh with the babel protocol using bird. Two of those antennas advertise the route 10.0.0.0/8. The rest of the antennas choose one of the two outputs depending on the babel protocol. How can I force it to go out through one or the other exit?
The easiest would probably be to fiddle with the link costs for each interface... -Toke
The problem is that all antennas that advertise this route are over the same interface in the rest of the antennas, over wlan interface Oriol El El jue, 12 ene 2023 a las 15:19, Toke Høiland-Jørgensen <toke@toke.dk> escribió:
Oriol Rico <oriol.rico@gmail.com> writes:
Hello: We have a series of wireless antennas deployed in mesh with the babel protocol using bird. Two of those antennas advertise the route 10.0.0.0/8. The rest of the antennas choose one of the two outputs depending on the babel protocol. How can I force it to go out through one or the other exit?
The easiest would probably be to fiddle with the link costs for each interface...
-Toke
On Thu, Jan 12, 2023 at 03:47:11PM +0100, Oriol Rico wrote:
The problem is that all antennas that advertise this route are over the same interface in the rest of the antennas, over wlan interface
You only need to set link cost for the two antennas advertising the 10.0.0.0/8. Therefore you cannot use interface rxcost option, but you can pre-initialize babel_metric in export fitler when exporting this external (static) route to babel protocol.
El El jue, 12 ene 2023 a las 15:19, Toke Høiland-Jørgensen <toke@toke.dk> escribió:
Oriol Rico <oriol.rico@gmail.com> writes:
Hello: We have a series of wireless antennas deployed in mesh with the babel protocol using bird. Two of those antennas advertise the route 10.0.0.0/8. The rest of the antennas choose one of the two outputs depending on the babel protocol. How can I force it to go out through one or the other exit?
The easiest would probably be to fiddle with the link costs for each interface...
-Toke
-- Elen sila lumenn' omentielvo Ondrej 'Santiago' Zajicek (email: santiago@crfreenet.org) OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net) "To err is human -- to blame it on a computer is even more so."
Oriol Rico <oriol.rico@gmail.com> writes:
The problem is that all antennas that advertise this route are over the same interface in the rest of the antennas, over wlan interface
Erm, I'm not sure I quite understand what you're asking, then? Could you please provide some more details on your setup and what you're trying to achieve? -Toke
We have a series of wireless antennas deployed in mesh with the babel protocol using bird. Two of those antennas advertise the route 10.0.0.0/8. The rest of the antennas choose one of the two outputs depending on the babel protocol. How can I force it to go out through one or the other exit?
You cannot force it, but you can strongly discourage one of the two nodes. Say something like this: filter babel_discourage { if babel_metric < 1024 then babel_metric = 1024; accept "ok"; }; protocol babel { ... ipv4 { export filter babel_discourage; }; ipv6 { export filter babel_discourage; }; }; You should not do the opposite: a node can safely increase the metric it announces, thus discouraging its use by other nodes, but it should not decrease its metric artificially, since that might defeat Babel's loop avoidance. -- Juliusz
But this filter applies in the antenna that advertise the route. 10.20.2.2 and 10.20.2.36 advertise 10.0.0.0/8 10.20.2.162 and 10.20.3.1 links with 10.20.2.2 and i want that 10.20.2.162 uses 10.20.2.36 (not direct link) for 10.0.0.0/8 not 10.20.2.2 and 10.20.3.1 uses 10.20.2.2 So i need to modify in 10.20.2.162 and 10.20.3.1 the 10.0.0.0/8 gateway Is this possible with babel? Thanks Oriol El El jue, 12 ene 2023 a las 16:11, Juliusz Chroboczek <jch@irif.fr> escribió:
We have a series of wireless antennas deployed in mesh with the babel protocol using bird. Two of those antennas advertise the route 10.0.0.0/8. The rest of the antennas choose one of the two outputs depending on
the
babel protocol. How can I force it to go out through one or the other exit?
You cannot force it, but you can strongly discourage one of the two nodes. Say something like this:
filter babel_discourage { if babel_metric < 1024 then babel_metric = 1024; accept "ok"; };
protocol babel { ... ipv4 { export filter babel_discourage; }; ipv6 { export filter babel_discourage; }; };
You should not do the opposite: a node can safely increase the metric it announces, thus discouraging its use by other nodes, but it should not decrease its metric artificially, since that might defeat Babel's loop avoidance.
-- Juliusz
But this filter applies in the antenna that advertise the route. 10.20.2.2 and 10.20.2.36 advertise 10.0.0.0/8
10.20.2.162 and 10.20.3.1 links with 10.20.2.2 and i want that 10.20.2.162 uses 10.20.2.36 (not direct link) for 10.0.0.0/8 not 10.20.2.2 and 10.20.3.1 uses 10.20.2.2
For anyone who's lost: 162 / \ / \ Internet --- 2 36 --- Internet \ / \ / 3.1 Oriol wants 162 to reach the Internet through 36 and 3.1 to reach the Internet through 2.
So i need to modify in 10.20.2.162 and 10.20.3.1 the 10.0.0.0/8 gateway Is this possible with babel?
It's possible with babeld (the standalone implementation of Babel), which allows filtering on router-id. Toke will correct me if I'm wrong, but I don't think that the BIRD implementation can do that. Another solution would be to use source-specific routing, but that's only supported for IPv6, not for IPv4. (Older versions of babeld supported source-specific routing for IPv4, but that was removed due to the complexity of the code.) -- Juliusz
Juliusz Chroboczek <jch@irif.fr> writes:
But this filter applies in the antenna that advertise the route. 10.20.2.2 and 10.20.2.36 advertise 10.0.0.0/8
10.20.2.162 and 10.20.3.1 links with 10.20.2.2 and i want that 10.20.2.162 uses 10.20.2.36 (not direct link) for 10.0.0.0/8 not 10.20.2.2 and 10.20.3.1 uses 10.20.2.2
For anyone who's lost:
162 / \ / \ Internet --- 2 36 --- Internet \ / \ / 3.1
Oriol wants 162 to reach the Internet through 36 and 3.1 to reach the Internet through 2.
So i need to modify in 10.20.2.162 and 10.20.3.1 the 10.0.0.0/8 gateway Is this possible with babel?
It's possible with babeld (the standalone implementation of Babel), which allows filtering on router-id. Toke will correct me if I'm wrong, but I don't think that the BIRD implementation can do that.
No, you're right, we don't export the router ID to filters. We could, though, if there's demand for it :) -Toke
I'll be attentive to the news :) Thanks !! Oriol El El jue, 12 ene 2023 a las 18:01, Toke Høiland-Jørgensen <toke@toke.dk> escribió:
Juliusz Chroboczek <jch@irif.fr> writes:
But this filter applies in the antenna that advertise the route. 10.20.2.2 and 10.20.2.36 advertise 10.0.0.0/8
10.20.2.162 and 10.20.3.1 links with 10.20.2.2 and i want that 10.20.2.162 uses 10.20.2.36 (not direct link) for 10.0.0.0/8 not 10.20.2.2 and 10.20.3.1 uses 10.20.2.2
For anyone who's lost:
162 / \ / \ Internet --- 2 36 --- Internet \ / \ / 3.1
Oriol wants 162 to reach the Internet through 36 and 3.1 to reach the Internet through 2.
So i need to modify in 10.20.2.162 and 10.20.3.1 the 10.0.0.0/8 gateway Is this possible with babel?
It's possible with babeld (the standalone implementation of Babel), which allows filtering on router-id. Toke will correct me if I'm wrong, but I don't think that the BIRD implementation can do that.
No, you're right, we don't export the router ID to filters. We could, though, if there's demand for it :)
-Toke
participants (4)
-
Juliusz Chroboczek -
Ondrej Zajicek -
Oriol Rico -
Toke Høiland-Jørgensen