Duplicating a post from the libp2p discussion forum for wider visibility. Please read through and participate!
We will be running a NAT Hole Punching month during December to measure the success rate of libp2p’s new feature. Please sign up using this form to express interest in participating in the campaign. You can then download the binary and participate in the experiment already today by visiting the latest releases and picking the right one for your computer.
Disclaimer: none of the collected data will be linked to email addresses, or other information that can identify any of the participants personally. This is a purely experimental study with no marketing purposes.
If you care about P2P, libp2p and IPFS, then you care about the most important unsolved piece of protocol design in P2P Networks: NAT Hole Punching, or in other words, how do you get to connect to the network from your home device without having to rely on centralized infrastructure.
The libp2p team has put great effort into the design and implementation of a Decentralized NAT Hole Punching technique, which is now live in the IPFS Network as of go-ipfs v0.11. You can read this summarising blogpost , if you want to learn more details. The next target is to measure the success rate of the hole punching technique, and apply optimizations as needed. Progressively, this feature will power all the other networks that use libp2p.
For this we need the help of the libp2p community, i.e., you! We will be running a Hole Punching Month during December and we’d love to have you participate.
If successful, NAT Hole Punching can be a game-changer for decentralised applications and networks!
The requirements are minimal:
- Please fill in this form to express interest in the experiment.
- You will then have to install a small program on your machine (from this page), which will be running tests to check the connectivity of your home machine. No technical skills required, no need to run an IPFS or libp2p node, so please tell your friends too!
- The tool is using minimal resources from your computer, so you won’t notice that another program is running. The program consumes ~2% of CPU, ~100MBs of memory and bandwidth equal to visiting one lightweight webpage every couple of minutes.
- The tool collects the following information from your node: IP address, NAT port mappings, ping latencies to other nodes participating in the experiment and outcome of the experiment (success, fail). This information cannot be linked in any way to your email address or other data that can identify you personally (unless you request an API-Key, see next point). The purpose of the study is purely experimental.
- If you want to further help debug the Hole Punching technique during December or afterwards, you can request an API key while installing the binary. We will use this to contact you in the email address you enter in the form, if needed. In this case, you can also receive a report of the experiment results for your own node! Going with this option will be greatly appreciated, but not required.
- We will later share the dataset that we will collect for others to experiment with, or use for their own purposes.
- You do not need to restart the program every time you restart your computer (please choose the right option when installing) and you don’t need to connect from one network only for the results to be valid - it’s totally fine if you move to other networks (e.g., home, office, cafe). It would most helpful if you run the program from a computer that is primarily connected to your home network, because that’s what the hole punching technique is targeting.
We will share all the details during the last week of November, but for now please sign up using the form. You can download, start running the binary and participate in the experiment already today, if you wish, by visiting the releases page [link] and picking the right one for your computer.
Technical Details & Pointers
If you’re interested to learn all of the details of libp2p’s NAT Hole Punching technique here are some pointers:
- Read the summarising blogpost.
- Watch Max Inden’s talk at the Paris P2P Festival 2022 [link].
- Watch Dennis Trautwein’s talk at IPFS Camp 2022 on how we are conducting the measurements [link].
- Read the paper that explains all the details, published at DINPS 2022 [link ].
- Check the Github repository of the “Direct Connection Upgrade through Relay" (DCUtR) protocol, used in libp2p’s Hole Punching [link].
- Check the Github repository that includes the code we developed for this experiment [link].
- Check these Grafana dashboards to see the experiment results in real time.
- Punchr Health: https://punchr.dtrautwein.eu/grafana/d/43l1QaC7z/punchr-health
- Punchr Performance: https://punchr.dtrautwein.eu/grafana/d/F8qg0DP7k/punchr-performance