Skip to content

Conversation

dignifiedquire
Copy link
Contributor

Work on integrating n0-computer/quinn#28 into the iroh magic

@n0bot n0bot bot added this to iroh Jul 7, 2025
@github-project-automation github-project-automation bot moved this to 🏗 In progress in iroh Jul 7, 2025
Copy link

github-actions bot commented Jul 7, 2025

Documentation for this PR has been generated and is available at: https://n0-computer.github.io/iroh/pr/3381/docs/iroh/

Last updated: 2025-08-01T09:29:38Z

Copy link

github-actions bot commented Jul 7, 2025

Netsim report & logs for this PR have been generated and is available at: LOGS
This report will remain available for 3 days.

Last updated for commit: ac1899b

@dignifiedquire dignifiedquire changed the title [WIP] feat: use quinn multipath [WIP] feat: use quic multipath Jul 8, 2025
@dignifiedquire dignifiedquire force-pushed the feat-multipath branch 3 times, most recently from 72cb071 to db712c0 Compare July 18, 2025 14:39
@dignifiedquire dignifiedquire force-pushed the feat-multipath branch 2 times, most recently from 4827e62 to 946f71c Compare July 28, 2025 20:29
flub added 30 commits September 30, 2025 20:21
can't use task::yield_now in a sync function
There's a silly bug in how discovery is hooked up that if you don't do
this check you fail hard.  Rather than clean up that discovery logic I
would prefer to just get on with the NodeStateActor refactor.
While that's currently possible, once we do QUIC-NAT-TRAVERSAL we can
only do this once there's a connection anyway.  So let's just delay
this by another RTT.
- When a path is selected make sure it is open on all connections.
- Do not open a path on a connection when it is already opened.
This no longer tries to figure out if discovery is needed based on how
recently we may have communicated with a remote endpoint.  Maybe
that's too simple and we'll have to add back some extra check for
discovery.  But most active connections would have had a response by
that time and not trigger the discovery.
The need for these was removed after the latest upstream quinn
changes.
MagicStack is just an Endpoint.

mesh_stacks is a StaticProvider with a task watching the node
addresses.

This simplifies things a lot.  And means I can delete some more unused
code that this stuff was using.
I'm not sure this test does anything useful anymore.  Maybe there's a
new test that needs to exist now but I don't yet know.
Our AsyncUdpSocket is always an IPv6 socket, because we need to sent
to our IPv6 ULAs for the mapped addresses.  This means Quinn will
convert any IPv4 destination into an IPv4-mapped IPv6
address (::ffff:a.b.c.d).

But our sockets are bound to a specific family, so even if the OS
supports and IPv6 socket that can handle IPv4 it will not accept those
addresses.  So when we are using the destinations we need to convert
back to the canonical addresses in the IPSender.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: 🏗 In progress
Development

Successfully merging this pull request may close these issues.

3 participants