[Babel-users] A Babel implementation in Go
Steffen Vogel
post at steffenvogel.de
Thu May 18 08:41:30 BST 2023
Hi babel-users,
This is my first post to this list and as such also my first contact with the Babel community.
A couple of days ago, I started to work on implementation of the Babel protocol in Go driven by the following objectives:
- Embeddable Go-package / library
- Possibly also a babeld-compatible daemon later-on
- Alternatively, integration into bio routing daemon
- Unicast & RTT support
- Clean and concise code
- Portable to Linux, BSDs, Windows & macOS
My motivation to start a new Babel implementation is driven by the need for routing daemon for my WireGuard overlay network.
There exist a couple of projects which establish and manage a mesh-network based on WireGuard point-to-point links [3].
I recently also started to work on my own mesh network daemon named "cunicu" which is inspired by excellent Tinc-VPN [4].
Tinc-VPN had the ability to route traffic over intermediate hops when direct point-to-point connectivity cannot be established.
This is a very useful feature to me when reaching into corporate or mobile networks. And to my knowledge, this basic routing
functionality of Tinc-VPN is still a unique feature which more moderns mesh-VPN solutions like Tailscale, NetBird, netmaker, ... do not support.
Hence, my requirements for unicast and the RTT-extensions are driven by my use-case in WAN point-to-point links.
You can find its current state in my GitHub repo [1]. Most of the low-level packet de/encoding as well as transmission/reception is implemented.
Basic data structures also exist and first multicast neighbour discovery also succeeded.
I am now starting to implement the basic protocol logic like updates, requests and route selection.
But as newcomer to the Babel protocol, that will take me some more time to fully grasp the details of the protocol.
My hope is to find a few collaborators for my endeavor who can support me with the tricky parts of the protocol.
Maybe you just started your holiday looking for a small weekend project to hack on? Or you are looking into learning a new programming language?
Let me know! Hacking together on such a project is always more fun.
(I am working on this purely on my spare time. This is a hobby project for me without any job/commercial background.)
Best regards,
Steffen (stv0g)
[1] https://github.com/stv0g/go-babel
[2] https://github.com/stv0g/cunicu/
[3] https://github.com/HarvsG/WireGuardMeshes
[4] https://www.tinc-vpn.org/
More information about the Babel-users
mailing list