BIRD 2.0 on FreeBSD, multihop with multiple fibs

Elmar K. Bins elmi at noir.de
Tue Nov 2 11:27:24 CET 2021


Hi everyone, I hope this is not too specific...

I'm running into a bit of a pickle here.

This is FreeBSD 12.2 with multi-fib enabled; BIRD exporting all its received
routes to fib 1, basic kernel routing in fib 0. (The service on the box is in
fib 1, of course).

I need to configure a multihop session where the BGP partner is not on the same
interface as the box's default, but on a pni, which is behind a VLAN-tagged
subinterface (i.e., bge0.300) down on a switch somewhere. Also, I can only
BGP connect to the partner via the PNI.

The interface has no fib tags, so it "exists" in both fibs.

Let's say we are bge0.300 5.6.7.7.
The other side of the PNI is at 5.6.7.8.
Our BGP partner is at 1.2.3.4, reachable through 5.6.7.8.

protocol static {
    ipv4;
    route 1.2.3.4/32 via 5.6.7.8;
}

Now, netstat tells me that 1.2.3.4/32 shows up in fib 1, but not in fib 0.
BIRD only puts it in fib 1.

In this setup, BIRD does not connect to 1.2.3.4 unless I manually add that host
route to fib 0. Adding a % 'bge0.300' to the static route line doesn't change a
thing, route still only appears in fib 1.

Two questions:

  - why does BIRD put the route in fib 1 when no fib is specified, and the
    interface is not bound to a fib?

  - Is there a canonical way of solving this? I have the fib 0 static route
    configured in the system setup now, which makes it work. It would be nicer
    to have it thrown in there by BIRD, so the config is self-contained.

Any guidance would be highly appreciated.

Elmar.




More information about the Bird-users mailing list