Dean <dluga93@gmail.com> 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