Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement routing protocol for partial meshes #10

Open
stv0g opened this issue May 4, 2022 · 2 comments
Open

Implement routing protocol for partial meshes #10

stv0g opened this issue May 4, 2022 · 2 comments
Labels
enhancement New feature or request feat:router

Comments

@stv0g
Copy link
Collaborator

stv0g commented May 4, 2022

Currently, cunicu expects to build a full mesh between all peers to establish full reachability.
In cases where peer connections can not be directly established, we fall back to TURN relays which transparently proxy the Wireguard UDP packets over a third party.

Alternatively, we could also limit ourself to a partial mesh and use existing peer connections to route trafic to other peers.
This would require the implementation of a routing protocol between the peers.

This approach is also used by Tinc-VPN.

Advantages

Disadvantages

  • Routed trafic would be interceptable by the peers which as a routing hop
    • In contrast: TURN relays would only see encrypted trafic

Open Questions

  • Which routing protocol to use?
    • Should we use an established protocol like IS-IS or BGP and embed an routing daemon into cunicu?
    • Existing implementations in Go:
    • Or should we implement a custom protocol based on a Link-state or Path-vector routing scheme?
      • Implementing our own would allow us to customize it for the Wireguard / WICE environemnt
        • Use public keys instead of IP addresses to build a routing table
        • Use gRPC as a transport like wice is using for most other signaling and RPC tasks.
@stv0g stv0g added the enhancement New feature or request label May 4, 2022
@stv0g
Copy link
Collaborator Author

stv0g commented Jul 16, 2022

This is also related to #9

@stv0g
Copy link
Collaborator Author

stv0g commented Mar 5, 2023

I've decided to go with a new implementation of the Babel routing protocol: https://github.com/stv0g/go-babel

@stv0g stv0g added this to the First Stable (v1.0) milestone Jun 7, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request feat:router
Projects
None yet
Development

No branches or pull requests

1 participant