Readit News logoReadit News
b_fiive commented on Iroh-blobs   iroh.computer/blog/iroh-b... · Posted by u/janandonly
dangoodmanUT · 2 months ago
Iroh is fantastic.

I’ve been intending to play with it more, it’s given me so many little project ideas that otherwise would be a pain

b_fiive · 2 months ago
delighted to hear! iroh-blobs is Rüdiger's love letter to BLAKE3, and hot dang has he taken this piece of machinery quite far. Much of this is covered in the post, but some highlights:

* fetch any sub-sequence of bytes, verified on send & receive * fetch sub-sequences of bytes in collections (sets of blobs / directories) * store on disk, inlining small blobs into the database for faster lookups * fan in from disk & the network * "multi-provider" fan in that can re-plan a fetch on the fly * should land support for WASM compilation (browsers) soon! https://github.com/n0-computer/iroh-blobs/pull/187

We're hard at work on making the API more ergonomic, but as a foundational protocol it's truly impressive. Rudi has been working with the BLAKE3 authors on both perf testing & the hazmat API.

disclosure: I work on iroh

b_fiive commented on Dumb Pipe   dumbpipe.dev/... · Posted by u/udev4096
darzu · 5 months ago
Does anyone know if this tech (or Iroh) is suitable for real-time networking for games? Basically, once connection is established, what's the overhead on top of UDP in terms of latency and bandwidth?

Edit: after digging a little, Iroh uses QUIC which looks like a reliable, ordered protocol as opposed to the unreliable, unordered nature of UDP which is what many games need.

Now what I'd love to figure out is if there's a way to use their relay hopping and connection management but send/receive data through a dumb UDP pipe.

b_fiive · 5 months ago
Yep! It's totally usable for games, and used in a few! One of my favs is the godot engine plugin: https://github.com/tipragot/godot-iroh

QUIC can do both reliable & unreliable streams, as can iroh

b_fiive commented on Dumb Pipe   dumbpipe.dev/... · Posted by u/udev4096
binarymax · 5 months ago
Thanks for the response. This statement confuses me a bit. What is a relay? Does traffic go through it at all, or is it for connection negotiation, or some of both?
b_fiive · 5 months ago
sibling comment with links to docs is the more accurate, but to summarize, it's some of both:

* all connections are always e2ee (even when traffic flows through a relay)

* relays are both for connection negotiation, and as a fallback when a direct connection isn't possible

* initial packet is always sent through the relay to keep a fast time-to-first-byte, while a direct connection is negotiated in parallel. typical connections send a few hundred bytes over the relay & the rest of the connection lifetime is direct

b_fiive commented on Dumb Pipe   dumbpipe.dev/... · Posted by u/udev4096
danenania · 5 months ago
Does it include reconnection logic? I presume that's not considered "low level", but it does always annoyingly have to be reimplemented every time you deal with long-lived socket connections in production.
b_fiive · 5 months ago
yes, to an extent. It will time out if the connection completely dies for more than the timeout interval, but all connections are designed to survive changes to network changes like IP address or network interface (eg: switching from WiFi to ethernet, or cellular)
b_fiive commented on Dumb Pipe   dumbpipe.dev/... · Posted by u/udev4096
smusamashah · 5 months ago
Somewhat relevant, I have a list of (mostly browser based + few no-setup cli) tools [1] to send files from A to B. I keep sharing this list here to fish more tools whenever something like this comes up.

[1]: https://gist.github.com/SMUsamaShah/fd6e275e44009b72f64d0570...

b_fiive · 5 months ago
same team behind dumbpipe makes sendme, which is much closer to this use case! https://github.com/n0-computer/sendme
b_fiive commented on Dumb Pipe   dumbpipe.dev/... · Posted by u/udev4096
binarymax · 5 months ago
Does this require a 3rd party host, or is it peer-to-peer?
b_fiive · 5 months ago
it's p2p. dumbpipe is hardcoded to use a public set of relays that we run for free (we being number 0, the team that make iroh & dumbpipe).

we can definitely add a config argument to skip the hardcoded relays & provide custom ones!

b_fiive commented on Dumb Pipe   dumbpipe.dev/... · Posted by u/udev4096
csteubs · 5 months ago
Just a head's up, I'm getting a 404 on the link to the relay docs (https://www.iroh.computer/docs/layers/connections) when attempting to click through.
b_fiive · 5 months ago
Thanks for the heads up! We've fixed: https://github.com/n0-computer/dumbpipe.dev/pull/11
b_fiive commented on Iroh: A library to establish direct connection between peers   github.com/n0-computer/ir... · Posted by u/gasull
Python3267 · 6 months ago
How does this compare to libP2P? https://libp2p.io/
b_fiive · 6 months ago
less configuration. more reliable. less pure p2p (iroh uses relays)
b_fiive commented on Iroh: A library to establish direct connection between peers   github.com/n0-computer/ir... · Posted by u/gasull
akavel · 6 months ago
Hm, how does this answer relate to the answer you gave to this comment: https://news.ycombinator.com/item?id=44381084 ? where, as far as I understand, you say it's possible to swap out quic for something else? asking sincerely, I'm confused here.
b_fiive · 6 months ago
ah very sorry, I can see how this isn't all that clear. In the comment you've mentioned when I say "custom protocol" I mean a custom QUIC ALPNs: https://datatracker.ietf.org/doc/html/rfc7301

When we talk to mainline it's for discovery, which is separate from iroh connections, which always uses QUIC. Specifically: our fork of quinn, an implementation of QUIC in rust. Iroh is tightly coupled to quinn, and isn't swappable. Getting no_std support for us basically boils down to "can we get quinn to support no_std?". For that, see: https://github.com/quinn-rs/quinn/issues/579

b_fiive commented on Iroh: A library to establish direct connection between peers   github.com/n0-computer/ir... · Posted by u/gasull
b0a04gl · 6 months ago
lets say if i someone wants to keep using bittorrent dht for peer finding but swap out quic for something else maybe grpc, does the lib support that split clean? asking from a modular embed first tooling pov, where discovery logic needs to outlive or outswap transport depending on deployment
b_fiive · 6 months ago
yep totally doable. You'd use iroh configured with mainline, Then write a custom protocol for the grpc bit: https://www.iroh.computer/docs/protocols/writing

We use this a bunch for writing rpc protocols on iroh: https://github.com/n0-computer/irpc , but there's no reason you couldn't write one with grpc.

u/b_fiive

KarmaCake day227September 5, 2018
About
caretaker at https://github.com/n0-computer/iroh
View Original