-
Notifications
You must be signed in to change notification settings - Fork 292
Open
Description
When building multi-hop relayed connections, there can be multiple modes for how exactly to dial. There are two obvious modes, but both of them are currently blind spots in the circuit relay spec.
(All kinds of other modes are also possible -- these two are just the most obvious ones.)
Hop-by-hop dialing
- How it dials, given
A->R1->R2->BAconnects toR1AbuildsA->R2connection, viaR1AbuildsA->Bconnection, viaR2
- Formula
Relay(Relay(Relay(A, R1), R2), B)
- Properties
Aonly sends the very next hop's multiaddr as the headerAis in full control of the circuitAdoesn't rely on/hopsupport on R1 or R2- More resource-intensive the more hops there are, light clients will probably rather use deferred dialing
- Slight overhead per hop due to multiple crypto channels and stream muxers.
- Naming
- previously dubbed "onion", which we shouldn't use anymore due to confusion with Tor.
- proposal: matreshka (russian doll)
- proposal: shallot (small onion, pic)
Deferred dialing
- How it dials, given
A->R1->R2->BAconnects toR1R1connects toR2R2connects toBR1buildsR1->Bconnection, viaR2R1buildsA->Bconnection, viaR1->B
- Formula, Header
Relay(A, Relay(R1, Relay(R2, B)))
- Properties
- Depends on
R1andR2allowing passing/p2p-circuitaddresses as headers - Resource-saving on
A, good for light clients - Slightly less overhead from multiple crypto channels and stream muxers
- Depends on
- Naming
- previously dubbed "telescope", which is a good name. I2P's relay construction is called the same and operates similarly, but with I2P the name isn't part of the branding (as with Tor), so it's fine to use it too.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Type
Projects
Status
Triage