Add Support for `iroh-net` to Enable Hole Punching

Open
#4 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
30/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Stale
Tech stack
docker, github-actions, rust

Research direction

Start by tracing the current iroh-blobs integration and comparing it with sendme's use of iroh-net and iroh-bytes. Define tests that verify hole punching through NATs or firewalls, using docker-nat-simulate as a possible test environment, and add GitHub CI workflows that run on pushes and pull requests. Done means the application supports the intended non-local connections and the tests run in CI.

Written by the indexing model from the issue text.

Description

Description
I noticed we are currently using iroh-blobs alone. iroh-blobs implements a simple request-response protocol. From what I've seen in iroh examples, the standard approach is to use iroh-blobs together with iroh-net for networking support. iroh-net is built on direct peer-to-peer QUIC connections that use relays and hole punching.

Since our implementation does not use iroh-net::Endpoint, it does not support hole punching and will only work locally or between two processes with public IP addresses. This is not the end goal for Ark Drop.

sendme is a good example that achieves a similar goal to what we have in mind. It uses iroh-bytes and iroh-net to send files and directories over the internet.

For this, we should integrate iroh-net into Ark Drop to support hole punching. This will allow the application to work even when the devices are behind NATs or firewalls.

Testing

Not really sure how this will turn out, but we should have some tests to verify that hole punching works. We should add basic GitHub CI workflows that run with each push/PR.

Potential solutions
Dominant language
Svelte
Stars
15
Forks
2
PR merge metrics
No merged PRs in 30d

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from ARK-Builders/Drop-Desktop

All issues in ARK-Builders/Drop-Desktop

Similar issues

More DevOps issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.