Hi have a simple question on which i want advice.
Consider the scenario where a set of devices are all behind CGNAT i.e they are not accesible or discoverable form the web. In this case will libp2p work interconnecting them.
all the devices are behind cgNat
libp2p can do NAT traversal via Project Flare. See tracking issue. Though, if I am not mistaken, we have not done any testing via carrier-grade NATs (CGNATs). Would be great if you could report back here with your experimentation results.
these are typically very hard to traverse, and there is usually double NATing involved.
Would love to see some testing with them.
Also of note that TCP is unlikely to go through, but UDP (QUIC) stands a reasonable chance to make it.
Yeah CGNAT traversal is very hard, but i would love to test libp2p in this scenario, i Just need a starting point.
i Just need a starting point.
I can only comment from the rust-libp2p side. All components for basic NAT hole punching are implemented (see Rust specific tracking issue), though not yet released. I still have to write a tutorial on how to orchestrate the many components.
All the components are there for go too.
You need a relay (see go-libp2p-relay-daemon) amd clients condfigured to use it with autorelay and hole punching enabled.