[tor-bugs] #29206 [Circumvention/Snowflake]: New design for client -- server protocol for Snowflake
Tor Bug Tracker & Wiki
blackhole at torproject.org
Thu Oct 24 13:43:07 UTC 2019
#29206: New design for client -- server protocol for Snowflake
-----------------------------------------------+---------------------------
Reporter: cohosh | Owner: cohosh
Type: task | Status:
| needs_review
Priority: Medium | Milestone:
Component: Circumvention/Snowflake | Version:
Severity: Normal | Resolution:
Keywords: anti-censorship-roadmap-september | Actual Points:
Parent ID: | Points: 6
Reviewer: dcf | Sponsor:
| Sponsor28-must
-----------------------------------------------+---------------------------
Comment (by cohosh):
> I restructured the protocol a bit to only send the session ID at the
start. This work as long as we're using the WebRTC datachannel with full
reliability, and I think it's worth doing for this very simple precursor
to Turbo Tunnel. The reason for the change was to simplify the calls to
NewSnowflake so we don't have to pass in the header we read in order to
determine which SnowflakeConn the snowflake belongs to. The drawback to
this is that the server has to remember to call ReadSessionID before
calling Read (which should be straightforward because Read should only be
called on a SnowflakeConn and at the start, the WebRTC connection doesn't
belong to a SnowflakeConn yet.
>
> Basically, throughout writing this, I've tried to keep the client and
server as symmetric as possible so that we share most of the code. This is
a bit different from the approach taken in Turbo Tunnel.
Also noting that doing things this way means we can't use this version for
multiplexing which is maybe more along the lines of what we want to solve
the issues with SOCKS timeouts. The way this is done in Turbo Tunnel with
including the session id as the first bytes sent in each write and the
connection migration technique from applications like mosh is very nice.
Packets can be sent by the client through multiple multiplexed channels
and the receiving end sends their data through whichever channel they most
recently received data from.
--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/29206#comment:32>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online
More information about the tor-bugs
mailing list