Source Address Dependent Routing for BIRD

Toke Høiland-Jørgensen toke at
Mon Mar 6 11:27:12 CET 2017

Dean <dluga93 at> writes:

> Static routes can be added in the configuration file with a source
> address constraint. To match an entry in the routing table, you have to
> match both the source and destination address. The same thing as running
> the command:
> ip -6 route add 2001:db9:1::/64 from 2001:db9:2::/64 dev eth0
> Meaning we can only send packets to the network 2001:db9:1::/64 if the
> source address is part of the 2001:db9:2::/64 subnet. Otherwise we get
> a network unreachable message. One little problem is that it needs the
> IPV6_SUBTREES kernel option, which is available in linux kernel
> versions later than 3.11, but it might not be enabled by default. It's
> being explored in the IETF as a way of handling multihoming for IPv6
> without NAT.
> OSPF can then spread the route through the network. It's also called
> source-specific routing. There's a paper out there for an
> implementation in babel.

Very cool! This is on my list of things to add to the Babel protocol as
well, so I'll be interested in looking over your patch - the core parts
should be reusable, and exchanging source-specific routes between Babel
and OSPF should also be doable I guess.

As for the lack of IPV6_SUBTREES: It is possible to achieve
source-specific routing by using policy routing in Linux (i.e. `ip
rule`), but it's somewhat of a hack. May be necessary to do something
like that anyway for BSD, though...

Here's the draft on the Babel source-specific extension:


More information about the Bird-users mailing list