-
Notifications
You must be signed in to change notification settings - Fork 314
feat: switch to QUIC multipath #3381
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft
dignifiedquire
wants to merge
157
commits into
main
Choose a base branch
from
feat-multipath
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Changes from 97 commits
Commits
Show all changes
157 commits
Select commit
Hold shift + click to select a range
c17a870
feat: use quinn multipath
dignifiedquire 7fe570d
update iroh-quinn
dignifiedquire 2f469ac
start opening paths
dignifiedquire 870716f
add more paths
dignifiedquire 346a7c2
set keep alive and idle timeouts for new paths
dignifiedquire 68b1769
insert relay path
dignifiedquire 0eb3fde
set relay path as backup
dignifiedquire 79ec17f
start removing ping logic from the node_map
dignifiedquire c4baca8
start tracking path events
dignifiedquire 549adee
start figuring out more details
dignifiedquire 9ef5765
wip
dignifiedquire 75d5525
get some stuff to work again
dignifiedquire 4f78898
remove ip_mapped_addresses
dignifiedquire 130710f
use correct relay addr on recv
dignifiedquire dba89df
ensure connection registration
dignifiedquire aab083d
remove rtt_actor, this is now done inside quinn on a per path basis
dignifiedquire d4484da
open additional paths after the initial connection
dignifiedquire 6cb94e4
ensure path open
dignifiedquire 998e283
some debugging
dignifiedquire 99cee61
update quinn branch
dignifiedquire 4b60a9a
fixups
dignifiedquire 04b714c
update deps
dignifiedquire 59efdcf
bunch of renames and doc updates, no functional changes
flub f9924cd
switch to main multipath branch
flub 3058a8e
another rename
flub 11dd04d
Set max_idle_time to a good value
flub 6869faa
fix typo
flub 539a514
Start hooking up a new NodeStateActor
flub a1a7d89
Rename AllPathsMappedAddr to NodeIdMappedAddr
flub 4b00ad7
Move all mapped addrs to one module
flub 31ab033
allow me to send via the NodeStateActor
flub 5ae71ed
Unify NodeIdMappedAddr and RelayMappedAddr a bit more
flub 599f25d
start implementing AddConnection
flub 2417e6b
make add_node_addr async and send it to the NodeStateActor
flub 9820e60
start handling AddNodeAddr message
flub ef7a6f3
start sending datagrams from the actor
flub 76f3768
Start adding state for holepunching decisions
flub 1366161
refactor to allow scheduling holepunching attempts
flub 3436423
plug in DiscoState to the NodeStateActor
flub 01bf15c
a sane method to send disco messages
flub 001d16d
Implement starting of holepunching
flub 7a9023f
handle receiving pings
flub 92dd37c
handle receiving CallMeMaybe messages
flub ac2db4d
open a path when we receive a pong
flub 6d69555
Move open path to not block the actor
flub 12d12c0
select the right path
flub 9e7be2d
close paths on all connections
flub c1bfdf5
send connections to the NodeStateActor
flub 7b4f056
remove PingActions from magicsock Actor Message
flub d3b81e7
Kill a bunch of dead code
flub d9ed9be
use a better way to send to this channel
flub 2c521b0
Hook up connecting check for a valid send addr
flub 21894e7
Do not send incoming packets through the NodeMap
flub fc97009
delete a whole bunch of unused code
flub 0b4214b
delete some more unused code
flub a0d5ba1
fine tune logging
flub 65c5d30
try_send is removed. do not log poll_send span twice
flub e7d9268
Do not holepunch on sending the first message
flub 924f41b
postpone solving this, make the test work
flub 8b1fd0f
Add the path from a new connection, call select path
flub 0522c0e
Do not close the last direct path on a connection
flub 50cc92f
Open some more paths when needed
flub 4a1375f
Add a first relay test
flub ee20734
Merge branch 'main' into feat-multipath
flub fdeb6f4
tidy up NodeMap creation
flub d4fc291
Simplify delayed discovery start
flub 8ba3fd9
Remove try_send impls, no longer used
flub 23ef6fe
remove dead code
flub 7fbd5df
Merge branch 'main' into feat-multipath
flub 3f58e95
Remove MagicStack and mesh_stacks
flub 7ac4dec
dead code
flub f38e5c2
remove test and delete then unused function
flub 1eeb4bb
start removing old nodestate
flub 145cb18
delete more: path_validity mod is gone
flub ccb3287
remove more!
flub 80157d4
and more gone
flub b0957cb
rename temporary name, now the name is free again
flub a3e58f8
slightly better logging
flub ce564f1
avoid unneeded mut when not testing
flub 4eb0f07
Convert to canonical IP address in IpSender
flub 28bf51c
remove duplicate adding
flub befde29
clearer bounds writing
flub 2b2f3c2
Merge branch 'main' into feat-multipath
flub 79cd50c
fix AddrMap impl to update both maps
flub c2a192e
Always use IPv6 addresses
flub 04e1e3d
tweak logging, this is too noisy
flub 660c39a
random lost import
flub 9da6c1c
keep reducing redundant logging
flub 85cedca
Make transports Addrs use the canonical form
flub 7ee963f
insert PathId::ZERO in the path_id_map
flub 9de1055
fix addr selection for holepunching
flub ae07d68
bunch of logging imporvements
flub 0ce64c9
remove redundant logging
flub 9a592ce
plug through a minimal PathInfo
flub eb92bb7
We don't pend CallMeMaybe anymore
flub 6e31e4d
clippy, at last some code quality
flub 008648c
care to enable multipath?
flub cdc0f90
refactor into more methods, just mechanical
flub b80de1a
Log transports::Addr a bit more compactly
flub 4200059
some minimal docs
flub 5988e94
rework the test a little to have easier spans
flub 77dfc32
log the correct packet lengths
flub 8b8321b
Set the path status for the initial path
flub 50f98b8
next thing to work on
flub b4114fa
chore: update git deps
dignifiedquire 583cf9e
Merge remote-tracking branch 'origin/main' into feat-multipath
dignifiedquire 5071e56
Merge remote-tracking branch 'origin/main' into feat-multipath
dignifiedquire 1976993
improve logging and reduce max concurrent paths to 16
flub e10ac11
Merge branch 'main' into feat-multipath
flub ce5bdd2
newtype the connection id
flub 7839a4c
make sure that the transport addrs use canonical addresses
flub fcaea95
No longer need to patch rustls
flub 7d86eff
Only select the path based on open paths
flub 203204c
some fixes to path selection
flub de2074e
small cleanups, review comments
flub 55d1c29
Merge branch 'main' into feat-multipath
flub bd680f1
Merge branch 'main' into feat-multipath
flub 9fcdd71
Use TransportAddr to improve PathInfo exposed
flub de6eefc
compile on wasm again
flub c2b131f
add relay to a new connection that is direct (#3569)
flub 5930eb5
Merge remote-tracking branch 'origin/main' into feat-multipath-mergemain
Frando a0edf73
target main-iroh branch
flub e5ad681
test improvements
flub e6625cd
Merge remote-tracking branch 'origin/main' into feat-multipath
dignifiedquire a5ca365
chore: fix typos
dignifiedquire a710f9d
cleanup docs and references
dignifiedquire a08af73
wasm fixes
dignifiedquire 4ddc94f
Merge remote-tracking branch 'origin/main' into feat-multipath
dignifiedquire 212e13a
Merge remote-tracking branch 'origin/main' into feat-multipath
Frando 6bec028
Remove obsolete test
flub dc46e18
fix doc links and clippy
flub a59f62f
Remove EndpointStateMapInner
flub 8f1cb97
fix: removal of path selection missed a cfg attribute
Frando 0659765
Merge remote-tracking branch 'origin/main' into feat-multipath
Frando 9921a35
bump quinn branch
flub 1a5c4dd
chore: only patch quinn directly
dignifiedquire 147e6bb
bench: add ipv6 option and metrics feature
dignifiedquire d1c1dab
refactor: improve path watching, add path stats (#3622)
Frando 7887fb5
refactor: minor cleanups in endpoint state (#3626)
Frando 1d5937c
refactor: use Connection::on_closed in endpoint state actor (#3627)
Frando e0f10ce
refactor(multipath): Make registering connections with the magicsock …
Frando 9d795d3
Merge remote-tracking branch 'origin/main' into feat-multipath
dignifiedquire 6380246
refactor: remove the TransportsSenderActor
dignifiedquire d0707e8
chore: fixup deny
dignifiedquire 50fdda3
refactor: disallow certain Source variants to be constructed externally
dignifiedquire 2f924d9
refactor: remove Endpoint::conn_type (#3647)
Frando 492b74e
refactor: use boxed watcher, not watchable, on connection (#3632)
Frando 25fe805
refactor(multipath): Stop inactive endpoint actors (#3643)
Frando e7bf47d
Bump quinn
flub 4b6824c
fix(iroh): Clear `EndpointStateActor::selected_path` once the last co…
matheus23 8d819f0
perf: various improvements
dignifiedquire 3745e7e
bump quinn
flub dab9d5f
fix(iroh)!: Correct the error structure (#3663)
flub c24c5d4
Cleanup some broken tests
flub 103e3c5
fix
flub 13fe787
fix(tests): Also run the tests in isolation in the default profile (#…
flub 1f2db9f
fix test by calling stream.finish() (#3665)
flub File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this should be reverted before merging
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh, do you think so? I found it really annoying to have to look at those full public keys when we debug-log a NodeAddr. I considered using the alternative-debug format, but unfortunately tracing only has
?and%support in their macros, for Debug and Display respectively. I didn't thyink there's any strict rule about how a Debug should look? It's not like you caneval()this back into a thing like e.g. Python.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it reduces the ability to reproduce information, that's why I am concerend about doing it by default. you can copy and paste the nodeid, relayurl and socket addrs currently, but suddenly you can't do it for the nodeid anymore
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A sigil for alternate display in tracing would be the best solution indeed. Looked again and found tokio-rs/tracing#3258 - I now pinged the tokio discord about how to move it forward (pr is open for 6 months without comments)