<div dir="ltr">If you're gauging interest, I would be very interested in using unicast atop Wireguard for routing selection<div><br></div><div>Thank you for the explanation; very helpful.  <br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Dec 6, 2017 at 8:11 AM, Toke Høiland-Jørgensen <span dir="ltr"><<a href="mailto:toke@toke.dk" target="_blank">toke@toke.dk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">Ryan Whelan <<a href="mailto:rcwhelan@gmail.com">rcwhelan@gmail.com</a>> writes:<br>
<br>
> Are there any routing protocol implementations that do not depend on<br>
> multicast?<br>
<br>
</span>We are in the process of standardising Babel, and one of the things we<br>
are adding is the ability to run entirely over unicast. So in the<br>
future, Babel will be able to do this (and integration with Wireguard is<br>
one of the things I want to achieve with this). But for now, no<br>
implementation exists.<br>
<br>
Other than that, maybe BGP? But you'd still need integration with<br>
Wireguard if you don't want to just set AllowedIPs to ::/0<br>
<span class=""><br>
> In my setup, 2 hosts will be able to route to one another over 2<br>
> different wg interfaces and I just need something to select whichever<br>
> interface has the least latency. Anything like that exist? :D<br>
<br>
</span>You can do this with point-to-point wireguard links. I.e., as long as<br>
the wireguard link only has two peers, you can set AllowedIPs to<br>
<a href="http://0.0.0.0/0" rel="noreferrer" target="_blank">0.0.0.0/0</a>, ::/0 on both sides, assign manual link-local addresses<br>
(anything in fe80::/64 will work, so you could just assign fe80::1/64 to<br>
one side and fe80::2/64 to the other side; they don't need to be<br>
globally unique either). Then you can run babeld on top, which will<br>
instruct the kernel to send appropriate packets to the wireguard<br>
interface, and wireguard will forward it to the other side.<br>
<br>
It's not currently possible to run a routing daemon on a multi-peer<br>
wireguard interface. The routing daemon would need to reconfigure<br>
wireguard in the kernel when it adds routes. I am planning to add this<br>
to Bird at some point, but have not gotten around to it yet...<br>
<span class="HOEnZb"><font color="#888888"><br>
-Toke<br>
</font></span></blockquote></div><br></div>