[tor-bugs] #33519 [Circumvention/Snowflake]: Support multiple simultaneous SOCKS connections
Tor Bug Tracker & Wiki
blackhole at torproject.org
Thu Mar 19 02:50:01 UTC 2020
#33519: Support multiple simultaneous SOCKS connections
-------------------------------------+------------------------
Reporter: dcf | Owner: (none)
Type: defect | Status: new
Priority: Medium | Milestone:
Component: Circumvention/Snowflake | Version:
Severity: Normal | Resolution:
Keywords: turbotunnel | Actual Points:
Parent ID: | Points:
Reviewer: | Sponsor:
-------------------------------------+------------------------
Comment (by dcf):
[https://github.com/xtaci/kcp-go/issues/166 Conversation] on the kcp-go
issue tracker convinced me that what I was doing in comment:3 is the wrong
approach. Two sessions sharing the same `PacketConn` will each be reading
packets intended for the other, resulting in effectively 50% packet loss.
(I think, unless quic-go has some special code to handle this case.)
Retransmissions will probably make the connection work, but obviously
performance will be bad.
Instead, I have new commits that implement option 4 for both the KCP and
QUIC branch.
[https://gitweb.torproject.org/user/dcf/snowflake.git/commit/?h
=turbotunnel-kcp&id=bb370f3f04c4fac256ec966b1e0d0fa969b7faa7 turbotunnel-
kcp]
[https://gitweb.torproject.org/user/dcf/snowflake.git/commit/?h
=turbotunnel-quic&id=d36eed58c1aefc4903b3175d620830855c764152 turbotunnel-
quic]
The commits introduce a `sessionManager` object that creates a
`PacketConn` and session on demand, and demand, and thereafter reuses the
same `PacketConn` and session. If the session ever dies (which should be
an unusual case), it tears down the `PacketConn` and allows a new
`PacketConn` and session to be created on demand the next time they are
needed. quic-go provides a nice channel that we can read to find out when
the session dies; with kcp-go we poll the
[https://godoc.org/github.com/xtaci/smux#Session.IsClosed IsClosed] method
periodically.
You'll be able to test the commits using the same procedure as in
comment:3.
I've started Tor Browser builds based on [https://blog.torproject.org/new-
release-tor-browser-95a8 9.5a8].
--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/33519#comment:4>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online
More information about the tor-bugs
mailing list