Idea: Using the SPDY protocol to improve Tor performance

Nick Mathewson nickm at
Fri Feb 5 16:03:58 UTC 2010

> 3. Design outline
>   One way to implement the SPDY proxy is for Tor exit nodes to
>   advertise this capability in their descriptor. The OP would
>   then preferentially select these nodes when routing streams
>   destined for port 80.
>   Then, rather than sending the usual RELAY_BEGIN cell, the OP
>   would send a RELAY_SPDY_BEGIN cell, to indicate that the exit
>   node should translate between SPDY and HTTP. The rest of the
>   connection process would operate as usual.
>   There would need to be some way of elegantly handling non-HTTP
>   traffic which goes over port 80.

I think there's a more generic mechanism lurking in the wings here.
SPDY is only one of several possible exit-side optimizing techniques
that might exist, and it seems overkill to add a new relay cell type
for each one we want to play with.  I'd suggest that instead, the
begin cell should tell the exit what kind of traffic transformation it
ought to perform, if any.  This could either be a new field in the
standard begin cell format, or it could be a new
RELAY_BEGIN_somethingorother cell type.

(As Scott mentioned in another thread, it is indeed a pretty basic
requirement that exits should not modify the streams they relay
without being asked.  However, there's nothing that says we can't add
a facility for asking them.)

Of course, if we aren't careful, this could partition clients.  We
need to make sure that any transformations we support on a
non-experimental basis  are going to be used by a pretty large
proportion of the userbase, or else users will risk standing out.

On performance: experiment seems like our best bet for seeing whether
and to what extent this actually helps in practice.


More information about the tor-dev mailing list