aboutsummaryrefslogtreecommitdiff
path: root/doc/design-paper
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2008-01-11 02:23:33 +0000
committerRoger Dingledine <arma@torproject.org>2008-01-11 02:23:33 +0000
commit4cf1b35a23956f0b1e88bf2078c364a6d147b253 (patch)
tree0bc856708d1dcaa44cafdd63411c0bdef0bc7a40 /doc/design-paper
parent4e9a701d4b9d66e6c74ca42986eb42435fa1728e (diff)
downloadtor-4cf1b35a23956f0b1e88bf2078c364a6d147b253.tar
tor-4cf1b35a23956f0b1e88bf2078c364a6d147b253.tar.gz
start to flesh out the issues; and add some more
svn:r13101
Diffstat (limited to 'doc/design-paper')
-rw-r--r--doc/design-paper/roadmap-future.tex129
1 files changed, 118 insertions, 11 deletions
diff --git a/doc/design-paper/roadmap-future.tex b/doc/design-paper/roadmap-future.tex
index 70049ef65..0f0b461ec 100644
--- a/doc/design-paper/roadmap-future.tex
+++ b/doc/design-paper/roadmap-future.tex
@@ -30,24 +30,120 @@ well-understood next steps that Tor needs to take. We should periodically
reorganize it to reflect current and intended priorities.
\section{Everybody can be a relay}
+
+We've made a lot of progress towards letting an ordinary Tor client also
+serve as a Tor relay. But these issues remain.
+
\subsection{UPNP}
-\subsection{"ORPort auto" to look for a reachable port}
+
+We should teach Vidalia how to speak UPNP to automatically open and
+forward ports on common (e.g. Linksys) routers. There are some promising
+Qt-based UPNP libs out there, and in any case there are others (e.g. in
+Perl) that we can base it on.
+
+\subsection{``ORPort auto'' to look for a reachable port}
+
+Vidalia defaults to port 443 on Windows and port 8080 elsewhere. But if
+that port is already in use, or the ISP filters incoming connections
+on that port (some cablemodem providers filter 443 inbound), the user
+needs to learn how to notice this, and then pick a new one and type it
+into Vidalia.
+
+We should add a new option ``auto'' that cycles through a set of preferred
+ports, testing bindability and reachability for each of them, and only
+complains to the user once it's given up on the common options.
+
\subsection{Incentives design}
+
+Roger has been working with researchers at Rice University to simulate
+and analyze a new design where the directory authorities assign gold
+stars to well-behaving relays, and then all the relays give priority
+to traffic from gold-starred relays. The great feature of the design is
+that not only does it provide the (explicit) incentive to run a relay,
+but it also aims to grow the overall capacity of the network, so even
+non-relays will benefit.
+
+It needs more analysis, and perhaps more design work, before we try
+deploying it.
+
\subsection{Windows libevent}
+
+Tor relays still don't work well or reliably on Windows XP or Windows
+Vista, because we don't use the Windows-native ``overlapped IO''
+approach. Christian King made a good start at teaching libevent about
+overlapped IO during Google Summer of Code 2007, and next steps are
+to a) finish that, b) teach Tor to do openssl calls on buffers rather
+than directly to the network, and c) teach Tor to use the new libevent
+buffers approach.
+
\subsection{Network scaling}
- - Practical side: how to handle a huge directory?
- - Anonymity side: impacts from partitioning?
+
+If we attract many more relays, we will need to handle the growing pains
+in terms of getting all the directory information to all the users.
+
+The first piece of this issue is a practical question: since the
+directory size scales linearly with more relays, at some point it
+will no longer be practical for every client to learn about every
+relay. We can try to reduce the amount of information each client needs
+to fetch (e.g. based on fetching less information preemptively as in
+Section~\ref{subsec:fewer-descriptor-fetches} below), but eventually
+clients will need to learn about only a subset of the network, and we
+will need to design good ways to divide up the network information.
+
+The second piece is an anonymity question that arises from this
+partitioning: if Tor's security comes from having all the clients
+behaving in similar ways, yet we are now giving different clients
+different directory information, how can we minimize the new anonymity
+attacks we introduce?
+
\subsection{Using fewer sockets}
- - Restricted-route topology
- - UDP design
-\subsection{Better algorithms for giving priority to local traffic}
+
+Since in the current network every Tor relay can reach every other Tor
+relay, and we have many times more users than relays, pretty much every
+possible link in the network is in use. That is, the current network
+is a clique in practice.
+
+And since each of these connections requires a TCP socket, it's going
+to be hard for the network to grow much larger: many systems come with
+a default of 1024 file descriptors allowed per process, and raising
+that ulimit is hard for end users. Worse, many low-end gateway/firewall
+routers can't handle this many connections in their routing table.
+
+One approach is a restricted-route topology~\cite{danezis:pet2003}:
+predefine which relays can reach which other relays, and communicate
+these restrictions to the clients. We would need to compute which links
+are acceptable in a way that's decentralized yet scalable, and we would
+need an efficient (compact) way to characterize the topology information
+so all the users could keep up to date.
+
+Another approach would be to switch to UDP-based transport between
+relays, so we don't need to keep the TCP sockets open at all. Needs more
+investigation too.
+
\subsection{Auto bandwidth detection and rate limiting, especially for
asymmetric connections.}
+
+
+\subsection{Better algorithms for giving priority to local traffic}
+
+Proposal 111 made a lot of progress at separating local traffic from
+relayed traffic, so Tor users can rate limit the relayed traffic at a
+stricter level. But since we want to pass both traffic classes over the
+same TCP connection, we can't keep them entirely separate. The current
+compromise is that we treat all bytes to/from a given connectin as
+local traffic if any of the bytes within the past N seconds were local
+bytes. But a) we could use some more intelligent heuristics, and b)
+this leaks information to an active attacker about when local traffic
+was sent/received.
+
\subsection{Tolerate absurdly wrong clocks, even for servers}
-\subsection{Metrics for deciding when you're fast enough and stable enough
- to opt to switch from being a bridge relay to a public relay.}
+\subsection{First a bridge, then a public relay?}
+Metrics for deciding when you're fast enough and stable enough
+ to opt to switch from being a bridge relay to a public relay.
+\subsection{Risks from being a relay}
\section{Tor on low resources / slow links}
\subsection{Reducing directory fetches further}
+\label{subsec:fewer-descriptor-fetches}
\subsection{AvoidDiskWrites}
\subsection{Using less ram}
\subsection{Better DoS resistance for tor servers / authorities}
@@ -86,9 +182,11 @@ reorganize it to reflect current and intended priorities.
\subsection{better metrics for assessing network health / growth}
- geoip usage-by-country reporting and aggregation
(Once that's working, switch to Directory guards)
-\subsection{Performance research}
- - Load balance better
- - Improve our congestion control algorithms
+\section{Performance research}
+\subsection{Load balance better}
+\subsection{Improve our congestion control algorithms}
+\subsection{Two-hops vs Three-hops}
+\subsection{Transport IP packets end-to-end}
\section{Outreach and user education}
\subsection{"Who uses Tor" use cases}
\subsection{Law enforcement contacts}
@@ -99,6 +197,7 @@ reorganize it to reflect current and intended priorities.
- "How to be a safe blogger"
\subsection{More activist coordinators, more people to answer user questions}
\subsection{More people to hold hands of server operators}
+\subsection{Teaching the media about Tor}
\subsection{The-dangers-of-plaintext awareness}
\subsection{check.torproject.org and other "privacy checkers"}
\subsection{Stronger legal FAQ for US}
@@ -110,6 +209,13 @@ reorganize it to reflect current and intended priorities.
\subsection{Using Tor when you really need anonymity. Can you compose it
with other steps, like more trusted guards or separate proxies?}
\subsection{Topology-aware routing; routing-zones, steven's pet2007 paper.}
+\subsection{Exactly what do guard nodes provide?}
+
+Entry guards seem to defend against all sorts of attacks. Can we work
+through all the benefits they provide? Papers like Nikita's CCS 2007
+paper make me think their value is not well-understood by the research
+community.
+
\section{Organizational growth and stability}
\subsection{A contingency plan if Roger gets hit by a bus}
- Get a new executive director
@@ -118,6 +224,7 @@ reorganize it to reflect current and intended priorities.
- Don't rely on any sector or funder category as much
\subsection{More Tor-funded people who are skilled at peripheral apps like
Vidalia, Torbutton, Polipo, etc}
+\subsection{More coordinated media handling and strategy}
\subsection{Clearer and more predictable trademark behavior}
\subsection{More outside funding for internships, etc e.g. GSoC.}
\section{Hidden services}