Skip to content
This repository has been archived by the owner on Nov 22, 2023. It is now read-only.

Decentralized hole punching #224

Open
alexander-camuto opened this issue Nov 5, 2021 · 0 comments
Open

Decentralized hole punching #224

alexander-camuto opened this issue Nov 5, 2021 · 0 comments
Labels
enhancement New feature or request

Comments

@alexander-camuto
Copy link
Contributor

alexander-camuto commented Nov 5, 2021

  • We currently use ngrok as a NAT hole punching solution. Although easy to use this introduces a myriad of setbacks:
    • ngrok servers are not distributed geographically, so we really take a hit in performance
    • ngrok code is proprietary so its hard to figure out what exactly is going on behind the scenes
    • ngrok relays / servers can't act as providers on our network -- which is a missed opportunity

In light of the PL project flare developments we should consider rolling out their relay-circuit v2 implementation for the public nodes on our networks (i.e those not behind a NAT).

Some brief notes on how to implement this:

  • Use autonat to determine if a node is behind a NAT or not -- if not, automatically promote a node to a relay.
  • Multi-address can contain information as to whether a peer requires a connection via a relay or not -- and through which relay.
  • Relays can see requests for content and would determine if they themselves should cache the content to boost performance and avoid the messaging roundtrips hole-punching requires -- this would be a first step in introducing a performance boosting hierarchy to the network.
  • Baking in support for WebRTC would remove the need for the DNS records we have to maintain atm -- which would make it easier to onboard new providers (as WebRTC is currently the only protocol that can perform hole-punching browser side)
@alexander-camuto alexander-camuto added the enhancement New feature or request label Nov 5, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant