aboutsummaryrefslogtreecommitdiff
path: root/doc/path-spec.txt
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2006-10-01 00:22:20 +0000
committerRoger Dingledine <arma@torproject.org>2006-10-01 00:22:20 +0000
commit6103077235e5a8ea4bb42063db71c8298e81beea (patch)
treed78b0c42a49351a0c2342a941cd0148b260524bd /doc/path-spec.txt
parent46e65094392e546ce04c793edbe7c9c41442eebf (diff)
downloadtor-6103077235e5a8ea4bb42063db71c8298e81beea.tar
tor-6103077235e5a8ea4bb42063db71c8298e81beea.tar.gz
try to explain when we cannibalize circuits.
svn:r8557
Diffstat (limited to 'doc/path-spec.txt')
-rw-r--r--doc/path-spec.txt46
1 files changed, 22 insertions, 24 deletions
diff --git a/doc/path-spec.txt b/doc/path-spec.txt
index 19d5f2936..45777a8df 100644
--- a/doc/path-spec.txt
+++ b/doc/path-spec.txt
@@ -91,11 +91,13 @@ of their choices.
After that, Tor will adapt the circuits that it preemptively builds
based on the requests it sees from the user: it tries to have a clean
fast exit circuit available for every port seen recently (one circuit
- is adequate for several ports or even all of them), and it tries to
- have the above internal circuits available if we've seen resolves
- or hidden service activity recently. Lastly, note that if there are
- no requests from the user for an hour, Tor will predict no use and
- build no preemptive circuits.
+ is adequate for many predicted ports -- it doesn't keep a separate
+ circuit for each port), and it tries to have the above internal
+ circuits available if we've seen resolves or hidden service activity
+ recently. If there are 12 clean circuits open, it doesn't open more
+ even if it has more predictions. Lastly, note that if there are no
+ requests from the user for an hour, Tor will predict no use and build
+ no preemptive circuits.
The Tor client SHOULD NOT store its list of predicted requests to a
persistent medium.
@@ -103,11 +105,19 @@ of their choices.
2.1.2. Clients build circuits on demand
Additionally, when a client request exists that no circuit (built or
- pending) might support, we cannibalize an existing circuit (2.1.4)
- or create a new circuit to support the request. We do so by picking
- a request arbitrarily, building or cannibalizing a circuit to support
- it, and repeating until every unattached request might be supported
- by a pending or built circuit.
+ pending) might support, we create a new circuit to support the request.
+ We do so by picking a request arbitrarily, launching a circuit to
+ support it, and repeating until every unattached request might be
+ supported by a pending or built circuit.
+
+ For hidden service interations, we can "cannibalize" a clean internal
+ circuit if one is available, so we don't need to build those circuits
+ from scratch on demand.
+
+ We can also cannibalize clean circuits when the client asks to exit
+ at a given node -- either via mapaddress or the ".exit" notation,
+ or because the destination is running at the same location as an
+ exit node.
2.1.3. Servers build circuits for testing reachability
@@ -119,26 +129,14 @@ of their choices.
See section 4 below.
-2.1.5. Cannibalizing circuits
-
- When Tor has a request (either an unattached stream or unattached resolve
- request) that no current circuit can support, it looks for an existing
- clean circuit to cannibalize. If it finds one, it tries to extend it
- another hop to an exit node that might support the stream. [Must be
- internal???]
-
- If no circuit exists, or is currently being built, along a path that
- might support a stream, we begin building a new circuit that might support
- the stream.
-
-2.1.6. Rate limiting of failed circuits
+2.1.5. Rate limiting of failed circuits
If we fail to build a circuit N times in a X second period (see Section
2.3 for how this works), we stop building circuits until the X seconds
have elapsed.
XXX
-2.1.7. When to tear down circuits
+2.1.6. When to tear down circuits
2.2. Path selection and constraints