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

Transport implementations and roadmap #157

Closed
JustinDrake opened this issue Nov 17, 2016 · 15 comments
Closed

Transport implementations and roadmap #157

JustinDrake opened this issue Nov 17, 2016 · 15 comments
Labels
need/analysis Needs further analysis before proceeding

Comments

@JustinDrake
Copy link
Contributor

JustinDrake commented Nov 17, 2016

What implementations of go-libp2p-transport are there? Is there a roadmap for future transports?

Currently

In development

Wanted

  • WebRTC
  • QUIC
  • I2P
@Kubuxu
Copy link
Member

Kubuxu commented Nov 18, 2016

We used to use https://github.com/libp2p/go-utp-transport/ and we would love to see it revived as we think that it took a blame for issues in smux and/or yamux and thus its removal.

@ghost
Copy link

ghost commented Nov 18, 2016

There's an onion transport which OpenBazaar are using I think: https://github.com/david415/ipfs-onion-transport

I'm also working on a UDP transport here: libp2p/go-udp-transport#2 -- it can't be used with libp2p yet as we need packet-based interfaces all the way through (working on that too).

@ghost
Copy link

ghost commented Nov 18, 2016

Oh and we'd love to have a WebRTC/QUIC transport in go-libp2p, but the respective external go libraries aren't far enough yet.

@whyrusleeping
Copy link
Contributor

I've also talked with @str4d about an I2P transport implementation, which would be pretty cool to have.

@JustinDrake
Copy link
Contributor Author

I ran ipfs swarm addrs and a couple things surprised me:

  • I found a bunch of swarm nodes that advertise /udp and /utp multiaddresses. Is that just for show?
  • No node advertise a /ws multiaddress. Is WS actually being used?

@whyrusleeping whyrusleeping added the need/analysis Needs further analysis before proceeding label Nov 28, 2016
@keks
Copy link
Contributor

keks commented Dec 2, 2016

There also is the relatively fresh protocol Secret Handshake (shs)

@jbenet
Copy link
Contributor

jbenet commented Dec 2, 2016

@JustinDrake yes. to talk to js-ipfs in some circumstances. it's not on by default.

The limiting factor in all this is the XTP project: https://github.com/libp2p/xtp. We need XTP to make it easy to use "likely to break" transports. We got bitten hard with go-utp, and we want to use libutp without using cgo for all of go-ipfs. And we want to isolate other possibly faulty transports.

@whyrusleeping
Copy link
Contributor

whyrusleeping commented Dec 2, 2016 via email

@avive
Copy link
Contributor

avive commented Dec 2, 2017

What's the status of this issue? Should utp be working yet for go-libp2p ?

@paralin
Copy link
Contributor

paralin commented Dec 20, 2017

I think I can make a quic transport pretty trivially with quic-go. It might also be interesting to look at making a KCP transport.

@whyrusleeping
Copy link
Contributor

@paralin its worth pointing out that @marten-seemann , one of the main maintainers of quic-go is working on just that. Its turned out to be not that trivial due to different interfaces being needed, and the fact that we don't have client certificate verification implemented into quic-go yet.

However, I agree on KCP. That should be a pretty simple thing to write up, and I would love to see it happen. The utp transport could also likely be fixed up and reintegrated while we're at it, but i'm actually thinking that KCP will outperform it (@xtaci's work is impressive)

@paralin
Copy link
Contributor

paralin commented Dec 20, 2017

So the interesting thing is, the idea behind XTP (External Transport) is very similar to our idea with creating a libp2p daemon. The protocols involved are:

  • Between CLI and daemon (grpc at the moment in my impl)
  • Between app and daemon (daemon acts as common peer listener for multiple apps)
  • Between daemon and external protocols (XTP?)

Can #2 and #3 be the same?

@whyrusleeping
Copy link
Contributor

@paralin we should probably open up a new issue somewhere to discuss XTP

@marten-seemann
Copy link
Contributor

At this moment, quic-go should provide all the features needed for libp2p integration (when we switch the handshake to the TLS-based one, as discussed in libp2p/specs#37).

We had a long discussion in libp2p/go-libp2p-transport#21 about the transport interfaces, and @Stebalien said he wanted to work on implementing this.

marten-seemann pushed a commit that referenced this issue Apr 22, 2022
close the connection when it is refused by InterceptSecured
marten-seemann pushed a commit that referenced this issue Aug 9, 2022
fix: delete addrs when "updating" them to zero
@marten-seemann
Copy link
Contributor

Closing this issue. See https://connectivity.libp2p.io/ for current transports offered by libp2p implementations.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
need/analysis Needs further analysis before proceeding
Projects
None yet
Development

No branches or pull requests

8 participants