aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/spec/proposals/151-path-selection-improvements.txt61
1 files changed, 47 insertions, 14 deletions
diff --git a/doc/spec/proposals/151-path-selection-improvements.txt b/doc/spec/proposals/151-path-selection-improvements.txt
index 4d583968f..3362efbe2 100644
--- a/doc/spec/proposals/151-path-selection-improvements.txt
+++ b/doc/spec/proposals/151-path-selection-improvements.txt
@@ -9,9 +9,9 @@ Status: Draft
Overview
The performance of paths selected can be improved by adjusting the
- CircuitBuildTimeout and the number of guards. This proposal describes
- a method of tracking buildtime statistics, and using those statistics
- to adjust the CircuitBuildTimeout and the number of guards.
+ CircuitBuildTimeout and avoiding failing guard nodes. This proposal
+ describes a method of tracking buildtime statistics, and using those
+ statistics to adjust the CircuitBuildTimeout and the number of guards.
Motivation
@@ -26,14 +26,17 @@ Implementation
Based on studies of build times, we found that the distribution of
circuit buildtimes appears to be a Pareto distribution. The number
- of circuits to observe (ncircuits_to_observe) before changing the
- CircuitBuildTimeout will be tunable. From our preliminary
- measurements, it is likely that ncircuits_to_observe will be
- somewhere on the order of 1000. The values can be represented
- compactly in Tor in milliseconds as a circular array of 16 bit
- integers. More compact long-term storage representations can be
- implemented by simply storing a histogram with 50 millisecond
- buckets when writing out the statistics to disk.
+ of circuits to observe (ncircuits_to_cutoff) before changing the
+ CircuitBuildTimeout will be tunable. From out measurements,
+ ncircuits_to_cuttoff appears to be on the order of 100.
+
+ In addition, the total number of circuits gathered
+ (ncircuits_to_observe) will also be tunable. It is likely that
+ ncircuits_to_observe will be somewhere on the order of 1000. The values
+ can be represented compactly in Tor in milliseconds as a circular array
+ of 16 bit integers. More compact long-term storage representations can
+ be implemented by simply storing a histogram with 50 millisecond buckets
+ when writing out the statistics to disk.
Calculating the preferred CircuitBuildTimeout
@@ -47,13 +50,43 @@ Implementation
of expected CDF of timeouts. Also, in the event of network failure,
the observation mechanism should stop collecting timeout data.
- Other notes
+ Dropping Failed Guards
+
+ In addition, we have noticed that some entry guards are much more
+ failure prone than others. In particular, the circuit failure rates for
+ the fastest entry guards was approximately 20-25%, where as slower
+ guards exhibit failure rates as high as 45-50%. In [1], it was
+ demonstrated that failing guard nodes can deliberately bias path
+ selection to improve their success at capturing traffic. For both these
+ reasons, failing guards should be avoided.
+
+ We propose increasing the number of entry guards to five, and gathering
+ circuit failure statistics on each entry guard. Any guards that exceed
+ the average failure rate of all guards by 10% after we have
+ gathered ncircuits_to_observe circuits will be replaced.
+
+
+Issues
+
+ Impact on anonymity
Since this follows a Pareto distribution, large reductions on the
timeout can be achieved without cutting off a great number of the
total paths. However, hard statistics on which cutoff percentage
gives optimal performance have not yet been gathered.
-Issues
+ Guard Turnover
+
+ We contend that the risk from failing guards biasing path selection
+ outweighs the risk of exposure to larger portions of the network
+ for the first hop. Furthermore, from our observations, it appears
+ that circuit failure is strongly correlated to node load. Allowing
+ clients to migrate away from failing guards should naturally
+ rebalance the network, and eventually clients should converge on
+ a stable set of reliable guards. It is also likely that once clients
+ begin to migrate away from failing guards, their load should go
+ down, causing their failure rates to drop as well.
+
+
+[1] http://www.crhc.uiuc.edu/~nikita/papers/relmix-ccs07.pdf
- Impact on anonymity