Source Address Dependent Routing for BIRD

Dean dluga93 at
Mon Mar 6 11:36:59 CET 2017

There is already an implementation for that here 
(, if you want to check. I think this 
supports both IPV6_SUBTREES and policy routing, not sure.

And I encountered another problem with IPV6_SUBTREES yesterday. Having 
source constrained routes and normal routes in the same routing table 
leads to unintended behavior. In my case, the normal route was ignored. 
If I had both a normal route and a source constrained route (with a 
wrong source address) in the table, it automatically returned a Network 
Unreachable, ignoring the normal route which should have worked.

On 03/06/2017 11:27 AM, Toke Høiland-Jørgensen wrote:
> 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:
> -Toke

More information about the Bird-users mailing list