Hi,
Assume the following toy example:
R1: R2:
10.1.1.0/24 <--- 10.1.1.1, 192.168.1.1 <---------> 192.168.1.2, 10.1.2.1 --->
10.1.2.0/24
Net 10.1.1.0/24 has R1 as default route, net 10.1.2.0/24 R2. Since the network
connectivity is known, 10.1.2.0/24 could reach 10.1.2.0/24 and vice versa. Of
course, R1 and R2 need to exchange that information.
It was my understanding that OSPF would do this automatically. But this does
not seem to be the case with Bird: Dynamic routes (10.1.1.0/24 and
192.168.1.0/24 for R1 and 192.168.1.0/24 and 10.1.2.0/24 for R2) do not land
automatically in bird's routing table. I would like to understand exactly why
and what is the "right" way to configure bird. Many protocols have flags to
allow this but all say it would only be for "exceptional" purposes. But the
above network is pretty much the most common one. Where else would routing
information come from if not from the network connectivity?
Note that this is not OSPF specific: My Mikrotik router automatically sends me
all the routes of its connected networks, as I would expect it.
So, I think there are the following options:
1.) The direct protocol. But the doc makes it sound this is not the right path:
"[...] Although there are some use cases that use the direct protocol (like
abusing eBGP as an IGP routing protocol), in most cases it is not needed to
have these device routes in BIRD routing table and to use the direct protocol.
[...]"
2.) The kernel protocol. But also here the docs have a strong bias importing
dynamic routes (device routes):
"[...] Unfortunately, there is one thing that makes the routing table
synchronization a bit more complicated. In the kernel routing table there are
also device routes for directly connected networks. These routes are usually
managed by OS itself (as a part of IP address configuration) and we don't want
to touch that. They are completely ignored during the scan of the kernel tables
and also the export of device routes from BIRD tables to kernel routing tables
is restricted to prevent accidental interference."
3.) The static protocol. I could add something like (for R1):
protocol static
{
export all;
route 10.1.1.0/24 via 192.168.1.1;
}
But then I would manually re-create the already known network connectivity in
the config file.
Why does no protocol in Bird want to take responsibility for the router's own
connectivity?
How on earth is this supposed to work?
Thanks,
Lukas