There is already an implementation for that here (https://github.com/jech/babeld), 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 <[email protected]> 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:
https://tools.ietf.org/html/draft-boutier-babel-source-specific-01

-Toke

Reply via email to