🥊 Hole punching with DCUtR not working #2388
-
Greetings everyone! 👋 I've been diving into the world of enabling hole punching with js-libp2p lately, dedicating a substantial amount of time to it, but alas, no breakthroughs. After some contemplation, I decided to initiate a discussion over on the libp2p forum, and someone suggested seeking assistance here. In a nutshell, I experimented with the Returning to my own JS version of the scenario using js-libp2p, I encountered a roadblock. Despite numerous modifications, successful hole punching remained elusive. I've documented my code and challenges in this GitHub repository. Any thoughts or ideas? @sukunrt, I was directed here from the libp2p forum as someone who might have insights. Would greatly appreciate any assistance or guidance! |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 13 replies
-
Can you check if your Private node knows its public IP? |
Beta Was this translation helpful? Give feedback.
-
Thanks for digging into this and trying to make it more reliable, the research is very valuable. We've not put a lot of effort in to hole punching in js-libp2p because, timing issues in JS aside, it really needs QUIC for to be reliable and support is still missing in Node.js. The current DCUtR protocol implementation is mainly there to enable the unilateral connection attempt part of the spec whereby nodeA dials nodeB via circuit relay, but nodeA has a publicly routable address that nodeB can dial directly so it does that. |
Beta Was this translation helpful? Give feedback.
Thanks for digging into this and trying to make it more reliable, the research is very valuable.
We've not put a lot of effort in to hole punching in js-libp2p because, timing issues in JS aside, it really needs QUIC for to be reliable and support is still missing in Node.js.
The current DCUtR protocol implementation is mainly there to enable the unilateral connection attempt part of the spec whereby nodeA dials nodeB via circuit relay, but nodeA has a publicly routable address that nodeB can dial directly so it does that.