<div dir="ltr">Hi Tim: <div>Thank you so much for replying. </div><div>I hope to address your questions in detail in this email, as well as posing some questions in the second part regarding some parts that we are less sure of. </div><div><br></div><div>1. Question of scope. Regarding the question of: </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">It's unclear whether your proposal is to: <br><span style="font-size:12.8px">* replace Tor's client to relay and relay to relay TCP links with QUIC, or<br></span>* allow Tor to carry arbitrary IP traffic, in addition to streams via a SOCKS proxy.</blockquote><div><br></div><div>We will definitely replace relay-to-relay TCP links with QUIC. And we will probably also replace the client-to-proxy link as well but without allowing arbitrary IP traffic (for reasons described in your email). We will still have the SOCKS proxy abstraction as it is right now but intercepting and running on QUIC instead of TCP. Now, I think most of our gain is going to be from the relay-to-relay links but we might be surprised by the reduction in circuit setup latency (as a result of fast QUIC handshakes). So, for the question of prioritization, we will examine relay-to-relay connections first. </div><div><br></div><div>2. Question of goals and uniqueness. Regarding the question of: </div><blockquote style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex" class="gmail_quote"><span style="font-size:12.8px">Some of the issues your proposal describes are addressed by tor's circuitmux implementation, and by the KIST scheduler implementation.<br></span><a href="http://www.cypherpunks.ca/~iang/pubs/ewma-ccs.pdf" target="_blank">http://www.cypherpunks.ca/~iang/pubs/ewma-ccs.pdf<br></a><a href="http://www.robgjansen.com/publications/kist-sec2014.pdf" target="_blank">http://www.robgjansen.com/publications/kist-sec2014.pdf</a><br>Another answer may be that TCP is a proven technology that works acceptably well for the Tor use case. It has a number of cross-platform implementations, stable interfaces, and decent security properties.</blockquote><div><br></div><div>I think the KIST paper is really a study that improves over the EWMA scheme, with the additional consideration for egress kernel queuing "fairness". But I think these two papers are really on a different level from our goal. The problems we set out to address are: </div><div><ul><li>Head-of-the-line blocking problem introduced by multiplexing multiple independent circuits over a single TCP stream. </li><li>Better congestion control, or decoupling the congestion control from the transport layer. </li><li>Explore the benefits of fast handshake and setup time. </li><li>Explore security differences between QUIC's TLS-over-UDP and the current TOR implementation. I know this is most likely not going to be very beneficial based on the end-to-end security requirement of TOR right now but this gives a different (and perhaps better) option of doing things. </li></ul><div>QUIC is specifically designed to tackle the HOL blocking problem when multiplexing multiple flows on a single connection. See <a href="https://docs.google.com/document/d/1gY9-YNDNAB1eip-RTPbqphgySwSNSDHLq9D5Bty4FSU/edit?pref=2&pli=1">design doc</a> on "Multiplexing". </div></div><div>Also, QUIC has a pluggable congestion control, meaning that we can "tailor-make" the congestion control mechanism based on the application. </div><div>Note that the KIST algorithm can still be applied with our changes to the transport layer. The application scheduling algorithms will not see this change. However, the EWMA algorithm might not be applicable anymore because with QUIC, there is no TCP multiplexing anymore. </div><div><br></div><div>Finally, we are perfectly aware of the state that QUIC is in right now and are not aiming to replace TCP in production code base overnight. Our goal is to simply examine the benefits of QUIC and contribute to the understanding of some of the problems of TOR over TCP. Maybe that one day under a more suitable circumstance, our project can be useful to the improvement of TOR. </div><div><br></div><div><u>Here is a question that we have about security: </u></div><div>Since QUIC comes with a transport layer security, we are worried that this feature is conflicting with TOR's application layer security. By "conflicting", I don't mean the QUIC will sabotage TOR's security, but it might be doing redundant work, such as encrypting twice unnecessarily (once for QUIC's TLS and once for TOR). So, we are exploring the possibility of turning off this feature in QUIC. What do you think of this problem? Are we on the right track? </div><div><br></div><div>Thank you! </div><div>Li. </div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Feb 16, 2016 at 8:29 PM, Tim Wilson-Brown - teor <span dir="ltr"><<a href="mailto:teor2345@gmail.com" target="_blank">teor2345@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><br><div><span class=""><blockquote type="cite"><div>On 17 Feb 2016, at 04:28, Xiaofan Li <<a href="mailto:xli2@andrew.cmu.edu" target="_blank">xli2@andrew.cmu.edu</a>> wrote:</div><br><div><div dir="ltr">Hi everyone: <div><br><div>I'm new to Tor dev community and my name is 
Xiaofan Li, currently a senior at Carnegie Mellon University studying 
ECE and CS. My friend Kevin Ku and I are taking a graduate <a href="http://www.cs.cmu.edu/%7Esrini/15-744/S16/" target="_blank">class</a>
 on computer networks and we decided to examine the possibilities of 
substituting TCP with the Google QUIC protocol for Tor in order to 
improve performance. <br><div><br></div></div></div><div>We are emailing you because: </div><div><ol><li>We want to get some points of contact with the Tor community in case of future integration and/or testing.  <br></li><li>We want to know if <b>anyone else</b> has done (or is doing) Tor with QUIC. If so, what their status is; and if not, why not? </li></ol></div></div></div></blockquote></span><div>Some of the issues your proposal describes are addressed by tor's circuitmux implementation, and by the KIST scheduler implementation.</div><div><a href="http://www.cypherpunks.ca/~iang/pubs/ewma-ccs.pdf" target="_blank">http://www.cypherpunks.ca/~iang/pubs/ewma-ccs.pdf</a></div><div><a href="http://www.robgjansen.com/publications/kist-sec2014.pdf" target="_blank">http://www.robgjansen.com/publications/kist-sec2014.pdf</a></div><div><br></div><div>Another answer may be that TCP is a proven technology that works acceptably well for the Tor use case. It has a number of cross-platform implementations, stable interfaces, and decent security properties.</div><span class=""><blockquote type="cite"><div><div dir="ltr"><div><ol start="3"><li>We want to get <b>your opinions</b> on this idea. Attached is our (very) preliminary plan and goals for the project. Any feedback is welcomed. </li></ol></div></div></div></blockquote></span><div>It's unclear whether your proposal is to:</div><div>* replace Tor's client to relay and relay to relay TCP links with QUIC, or</div><div>* allow Tor to carry arbitrary IP traffic, in addition to streams via a SOCKS proxy.</div><div><br></div><div>These are two very different goals, they're both referred to in the proposal, but they're not described separately or prioritised.</div><div><br></div><div>Tor likely contains a number of implementation assumptions that make arbitrary IP traffic difficult, and there are security implications in moving from a stream-based proxy to an arbitrary IP traffic proxy.</div><div><br></div><div>And there's currently no mechanism for tor to accept arbitrary IP traffic from clients, so you'd have to build that, too. (The transparent proxy support might be a good place to start.)</div><span class=""><blockquote type="cite"><div><div dir="ltr"><div><ol start="4"><li>Any <b>implementation recommendations</b>.
 My plan is to find a clean layer of abstraction where I can substitute 
TCP with QUIC. Any ideas? On a first look, I'm thinking about either 
<i>or/channel.c</i> or <i>or/transports.c </i></li></ol></div></div></div></blockquote></span><div>Read torguts, it describes the abstraction layers within tor:</div><div><a href="https://gitweb.torproject.org/user/nickm/torguts.git/" target="_blank">https://gitweb.torproject.org/user/nickm/torguts.git/</a></div><span class=""><blockquote type="cite"><div><div dir="ltr"><div><ol start="5"><li>Any <b>testing suggestions</b>? How do Tor engineers test new stuff? <br></li></ol></div></div></div></blockquote></span><div>I typically use chutney for smoke tests. Others use shadow for simulations:</div><div><a href="https://gitweb.torproject.org/chutney.git/" target="_blank">https://gitweb.torproject.org/chutney.git/</a></div><a href="https://shadow.github.io/" target="_blank">https://shadow.github.io/</a></div><div><br></div><div>Tim</div><br><div>
<div style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word"><div style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word"><div style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word"><div style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word"><div style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word"><div style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word"><div style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word"><div style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word"><div style="text-align:start;text-indent:0px;word-wrap:break-word"><div style="text-align:start;text-indent:0px;word-wrap:break-word"><div style="text-align:start;text-indent:0px;word-wrap:break-word"><div style="text-align:start;text-indent:0px;word-wrap:break-word"><div style="text-align:start;text-indent:0px;word-wrap:break-word"><div style="text-align:start;text-indent:0px;word-wrap:break-word"><div style="text-align:start;text-indent:0px;word-wrap:break-word"><div style="text-align:start;text-indent:0px;word-wrap:break-word"><div style="text-align:start;text-indent:0px;word-wrap:break-word"><div style="text-align:start;text-indent:0px;word-wrap:break-word"><div style="text-align:start;text-indent:0px;word-wrap:break-word"><div style="color:rgb(0,0,0);letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px;text-align:start;text-indent:0px;word-wrap:break-word">Tim Wilson-Brown (teor)</div><div style="color:rgb(0,0,0);letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px;text-align:start;text-indent:0px;word-wrap:break-word"><br></div><div style="text-align:start;text-indent:0px;word-wrap:break-word">teor2345 at gmail dot com<br>PGP 968F094B<br><br>teor at blah dot im<br>OTR CAD08081 9755866D 89E2A06F E3558B7F B5A9D14F</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>
</div>
<br></div><br>_______________________________________________<br>
tor-dev mailing list<br>
<a href="mailto:tor-dev@lists.torproject.org">tor-dev@lists.torproject.org</a><br>
<a href="https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-dev" rel="noreferrer" target="_blank">https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-dev</a><br>
<br></blockquote></div><br></div>