[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