[Babel-users] A Babel implementation in Go

Steffen Vogel post at steffenvogel.de
Thu May 18 12:59:29 BST 2023


Hi Juliusz,

> That's way into the future, but I encourage you to keep source-specific routing in mind.

Noted __ I am already parsing sub-TLVs for it. I think there is also a valid use-case for SADR
within overlay networks as every node has its own external gateway and connected networks
which we could route using SADR.

> Are you planning any interesting interactions between Babel and Wireguard?
> If you're going to avoid multicast, you'll need to automatically import
> Wireguard peers into Babel's neighbour table.

Yes exactly. WireGuard does not support Multicast. So Unicast is the only option.

WireGuard's peer/node identity is determined by its public X25519 key.
I am using this public key to derive a link-local IPv6 address which is used for the neighbour configuration.

This means, I can build a Babel daemon tailored for WireGuard meshes which
Requires no external configuration __

My cunicu daemon performs peer detection in two ways:

- Monitoring WireGuard's kernel/userspace interfaces to detect peers
  This is local to the node and basically allows the users to manage the WireGuard interfaces
  by hand or any other existing tool like NetworkManager, system-network, ..

- Broadcasting peer information within the mesh to pick-up new peers
  which are joining the network. This is a bit trickier as you want to
  control which peers are allowed to join the network, and also to revoke this access.
  Managing this can be challenging in a fully decentral mesh-network without the
  Web-dashboard / management server the commercial mesh-overlay tools like
  Tailscale & Netbird provide.

Another interesting point is the existence of a performant user-space WireGuard implementation in Go.
Hence, enabling cunicu to ship as single binary including VPN, Routing, Auto-configuration functions.
Thanks to Go, this binary has no external dependencies and can be portable across platforms which
Provide some sort of TUN/TAP interface.

Best regards,
Steffen







More information about the Babel-users mailing list