<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 17 Feb 2016, at 04:28, Xiaofan Li <<a href="mailto:xli2@andrew.cmu.edu" class="">xli2@andrew.cmu.edu</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">Hi everyone: <div class=""><br class=""><div class="">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="">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 class=""><div class=""><br class=""></div></div></div><div class="">We are emailing you because: </div><div class=""><ol class=""><li class="">We want to get some points of contact with the Tor community in case of future integration and/or testing.  <br class=""></li><li class="">We want to know if <b class="">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><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" class="">http://www.cypherpunks.ca/~iang/pubs/ewma-ccs.pdf</a></div><div><a href="http://www.robgjansen.com/publications/kist-sec2014.pdf" class="">http://www.robgjansen.com/publications/kist-sec2014.pdf</a></div><div><br class=""></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><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class=""><ol class="" start="3"><li class="">We want to get <b class="">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><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 class=""></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 class=""></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 class=""></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><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class=""><ol class="" start="4"><li class="">Any <b class="">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 class="">or/channel.c</i> or <i class="">or/transports.c </i></li></ol></div></div></div></blockquote><div>Read torguts, it describes the abstraction layers within tor:</div><div><a href="https://gitweb.torproject.org/user/nickm/torguts.git/" class="">https://gitweb.torproject.org/user/nickm/torguts.git/</a></div><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class=""><ol class="" start="5"><li class="">Any <b class="">testing suggestions</b>? How do Tor engineers test new stuff? <br class=""></li></ol></div></div></div></blockquote><div>I typically use chutney for smoke tests. Others use shadow for simulations:</div><div><a href="https://gitweb.torproject.org/chutney.git/" class="">https://gitweb.torproject.org/chutney.git/</a></div><a href="https://shadow.github.io/" class="">https://shadow.github.io/</a></div><div><br class=""></div><div>Tim</div><br class=""><div class="">
<div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Tim Wilson-Brown (teor)</div><div style="color: rgb(0, 0, 0); letter-spacing: normal; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""></div><div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">teor2345 at gmail dot com<br class="">PGP 968F094B<br class=""><br class="">teor at blah dot im<br class="">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 class=""></body></html>