1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- Filename: 151-path-selection-improvements.txt
- Title: Improving Tor Path Selection
- Version:
- Last-Modified:
- Author: Fallon Chen, Mike Perry
- Created: 5-Jul-2008
- Status: Draft
- Overview
- The performance of paths selected can be improved by adjusting the
- 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
- Tor's performance can be improved by excluding those circuits that
- have long buildtimes (and by extension, high latency). For those Tor
- users who require better performance and have lower requirements for
- anonymity, this would be a very useful option to have.
- Implementation
- Learning the CircuitBuildTimeout
- 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_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
- Circuits that have longer buildtimes than some x% of the estimated
- CDF of the Pareto distribution will be excluded. x will be tunable
- as well.
- Circuit timeouts
- In the event of a timeout, backoff values should include the 100-x%
- of expected CDF of timeouts. Also, in the event of network failure,
- the observation mechanism should stop collecting timeout data.
- 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.
- 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
|