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

Project Flare / Hole Punching tracking issue #1122

Closed
marten-seemann opened this issue Jun 30, 2021 · 4 comments
Closed

Project Flare / Hole Punching tracking issue #1122

marten-seemann opened this issue Jun 30, 2021 · 4 comments

Comments

@marten-seemann
Copy link
Contributor

marten-seemann commented Jun 30, 2021

Circuit v2

  • p2p-circuit v2 go-libp2p-circuit#125 implements the circuit v2 spec
    • It might need some work to reduce the attack surface.
  • Remove v1 circuit relay on the server side. The client has a built-in fallback to v1, and PL will continue to run v1 relays for a while.
  • Build logic (using autonat events) to start a v2 relay if the node is publicly accessible.

Tentative timeline: Get this ready for the go-ipfs v0.10 release.

Hole Punching

Tentative timeline: We should defer enabling this until a critical mass of nodes have upgraded and are running v2 relays.

AutoRelay

Once a critical mass of v2 relays has been deployed, rewrite the code to use v2 relays (reserve slots and refresh reservations).
The selection logic should be two-fold:

  • Use the DHT and find the closest peers in KAD space, reserve to 2 (or 3) relays from those candidates. Detection of v2 relay support is easy, we can simply wait for identify and see if the node supports the v2 hop protocol.
  • Provide an option to configure static v2 relays (without a default list! we want to stop running relays and be a point a centralization) for users who run their own relays.
@marten-seemann
Copy link
Contributor Author

Moving to #1039.

@BigLep
Copy link
Contributor

BigLep commented Mar 10, 2022

I'm reopening this because #1039 has been closed but we have more to do here before "Project Flare" is "done". I believe having no open project flare issues causes confusion. People think it's done, when there is more to do.

What does "done" mean?
The definition I have in my head is that it is good enough to be on by default in go-ipfs. Things I'm aware of to get to that point:

  1. Mechanism to automatic discovery of relay servers.
  2. CI testing to ensure we don't introduce any regressions
  3. Documentation items? (e.g., Add documentation about Project Flare (hole punching, Circuit Relay v2, NAT traveral) docs#110 , NAT Traversal: Tell users if they are behind a symmetric NAT and document UPnP setup and port forwarding on Routers to help users #1017)
  4. Plumbing through / enabling in go-ipfs.

@marten-seemann : happy to discuss this more here or in #libp2p-dev. I know my list above is likely incorrect. I assume you'll update the issue description to describe what actually remains.

Thanks!

@BigLep BigLep reopened this Mar 10, 2022
@marten-seemann
Copy link
Contributor Author

I disagree.

  1. Mechanism to automatic discovery of relay servers.

That's #1351.

  1. CI testing to ensure we don't introduce any regressions

That could be a testground issue, but doesn't justify keeping this issue open in my opinion. We have a lot of stuff we want to test better, and it makes little sense to keep the original "implement the feature" issue open for all of them.

  1. Documentation items? (e.g., Add documentation about Project Flare (hole punching, Circuit Relay v2, NAT traveral) docs#110 , NAT Traversal: Tell users if they are behind a symmetric NAT and document UPnP setup and port forwarding on Routers to help users #1017)

Looks like we already have issues for those. Why is that not good enough?
Besides, the second one has nothing to do with Flare.

  1. Plumbing through / enabling in go-ipfs.

That should be an issue in go-ipfs, not in go-libp2p.

I'm reopening this because #1039 has been closed but we have more to do here before "Project Flare" is "done".

This issue here was created erroneously, that's why it was closed the same day. If at all, #1039 should have been reopened, not this one.

@BigLep
Copy link
Contributor

BigLep commented Mar 10, 2022

@marten-seemann : I'm game to work in any issue. It sounds like #1039 is preferred.

I want to have a way to be clear that "hole punching in go-libp2p is done to a state that we recommend key consumers like go-ipfs and lotus enable it by default". #1039 was closed before we hit that state, so I assumed it was denoting a different milestone.

I'll plan on commenting more in #1039.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants