On Thu, Sep 27, 2018 at 06:49:37PM +0000, alex_y_xu@yahoo.ca wrote:
It seems that your idea can basically be summarized as "implement circuit resumption". This is likely not inherently difficult to implement, except for the problem of knowing when to expire old sessions. If you just use the TCP rules, then you might as well just run Tor over multipath TCP or QUIC or something.
So long as the exit relay doesn't go down (because it has the TCP connections between the Tor network and external destinations), circuit resumption should be pretty easy -- you just stick a little header on the front of cells that gives them counters (to put them into the right order), and then put some ability to buffer and acknowledge and retry on the endpoints. You could hack it together yourself (probably a bad idea) or you could use one of these end-to-end reliability protocols that people already work on.
And once you've done that, you're quite close to being able to do two (or multiple) paths in parallel for a given circuit, which can get you some really intriguing performance, robustness, and security properties: https://www.freehaven.net/anonbib/#pets13-splitting
And once you've done *that*, you might as well swap out Tor's hacky end-to-end flow control for something fancier, like as you say QUIC.
For way more in this area, check out https://blog.torproject.org/tors-open-research-topics-2018-edition
--Roger