Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
T
Tor
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Benjamin J. Thompson
Tor
Commits
61030772
Commit
61030772
authored
18 years ago
by
Roger Dingledine
Browse files
Options
Downloads
Patches
Plain Diff
try to explain when we cannibalize circuits.
svn:r8557
parent
46e65094
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
doc/path-spec.txt
+22
-24
22 additions, 24 deletions
doc/path-spec.txt
with
22 additions
and
24 deletions
doc/path-spec.txt
+
22
−
24
View file @
61030772
...
...
@@ -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
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment