Skip to content
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

protocols: Implement Direct Connection Upgrade through Relay (dcutr) #2076

Closed
wants to merge 205 commits into from

Conversation

mxinden
Copy link
Member

@mxinden mxinden commented May 25, 2021

This pull request implements the Direct Connection Upgrade through Relay specification. For the greater picture please see #2052 and libp2p/specs#312.

Status quo

It builds on top of #2059 and #2066. Please post review comments related to circuit relay v2 and simultaneous open on #2059 and #2066.

This commit adds an implementation for the circuit relay v2 protocol to
be used as a relay server, i.e. it supports incoming HOP requests and
outgoing STOP requests. Future commits will add support for clients,
i.e. outgoing HOP requests and incoming STOP requests.

The existing circuit relay v1 protocol implementation is moved to
protocols/relay/src/v1.
From the multistream-select 1.0 simultaneous open protocol extension
specification:

> In order to support direct connections through NATs with hole
punching, we need to account for simultaneous open. In such cases, there
is no single initiator and responder, but instead both peers act as
initiators. This breaks protocol negotiation in multistream-select,
which assumes a single initator.

> This draft proposes a simple extension to the multistream protocol
negotiation in order to select a single initator when both peers are
acting as such.

See libp2p/specs#196 for details.

This commit implements the above specification, available via
`Version::V1SimOpen`.
mxinden and others added 26 commits December 16, 2021 21:56
…signment

Co-authored-by: Elena Frank <57632201+elenaf9@users.noreply.github.com>
- Copying from a to b and vice versa.
- Checking max bytes.
- Checking max duration.
See 1123952 for similar change in libp2p-relay.
See #7 for similar change in
libp2p-relay.
@mxinden
Copy link
Member Author

mxinden commented Jan 15, 2022

With #2059 merged and #2363 likely substituting #2066, I am replacing this pull request with #2438 to ease reviewing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants