[tahoe-dev] uTP (low extra delay transport)

ghazel at gmail.com ghazel at gmail.com
Thu May 27 17:39:48 PDT 2010


On Thu, May 27, 2010 at 4:45 PM, Brian Warner <warner at lothar.com> wrote:
> (in the long run, if you do a lot of
> web browsing, you might not leave much bandwidth left for tahoe, and
> you'll lose reputation among the other nodes, and they'll stop using
> you, and you'll stop getting points/mojo/etc).

Most web browsing leaves plenty of space for uTP during the idle
periods. You would need to do something continuously like p2p or
streaming video/voice (in both directions) to crowd out uTP entirely.

> What does the uTP API look like? Is it a byte-pipe? Or like a reliable
> datagram?

It's a byte-pipe, just like TCP. uTP is very much like TCP with the
LEDBAT congestion controller instead.

> To use it, though, we'd need to build some layers on top. Tahoe's
> storage-server connections are currently built on Foolscap+SSL+TCP.
>
> (I imagine that it would be non-trivial to build SSL on top of uTP, so I
> don't think we'd make a lot of progress until we get away from the
> shared secrets).

If tunneling your SSL traffic maintains your security model, that is
fairly simple to do. SSL traffic could be locally passed untouched
through a uTP connection to the other side, much like tunneling SSL
over an HTTP proxy with the CONNECT method, only with one on each end.
Is that sufficient?

SSL over UDP exists as DTLS, which OpenSSL supports. I don't know how
difficult DTLS is to use from Python, but adding uTP in to the mix is
very trivial. uTP can be plugged in to any transport which supports
something that looks like recvfrom and sendto.

> We'd want to have a uTP API that's close enough to the subset of
> TCP/HTTP that we use, so these two modes (foreground vs background)
> wouldn't need drastically different code.

It is very simple to simply swap in uTP as a transport for HTTP, since
it behaves much like TCP.

> So, sounds exciting, and I'd like to use it, but there's a lot of prep
> work that has to happen first.

Hopefully this made it a bit more clear. I think there might be less
prep work since uTP is so much like TCP.

-Greg


More information about the tahoe-dev mailing list