summaryrefslogtreecommitdiff
path: root/doc/spec/proposals/151-path-selection-improvements.txt
diff options
context:
space:
mode:
authorMike Perry <mikeperry-git@fscked.org>2009-09-18 02:01:39 -0700
committerMike Perry <mikeperry-git@fscked.org>2009-09-20 14:51:30 -0700
commitf39bedf250ce878436acda2b7217fa0b5621ffaa (patch)
tree476172fdbb2ca038d6eb147a41d07c5b50947473 /doc/spec/proposals/151-path-selection-improvements.txt
parent6700e528be5ee688439730f7e8f13b3ce9b64e09 (diff)
downloadtor-f39bedf250ce878436acda2b7217fa0b5621ffaa.tar.gz
tor-f39bedf250ce878436acda2b7217fa0b5621ffaa.zip
Implement and document new network liveness algorithm.
Based on irc discussion with arma.
Diffstat (limited to 'doc/spec/proposals/151-path-selection-improvements.txt')
-rw-r--r--doc/spec/proposals/151-path-selection-improvements.txt25
1 files changed, 14 insertions, 11 deletions
diff --git a/doc/spec/proposals/151-path-selection-improvements.txt b/doc/spec/proposals/151-path-selection-improvements.txt
index 94e964b017..af17c4d41a 100644
--- a/doc/spec/proposals/151-path-selection-improvements.txt
+++ b/doc/spec/proposals/151-path-selection-improvements.txt
@@ -89,17 +89,20 @@ Implementation
We attempt to detect both network connectivity loss and drastic
changes in the timeout characteristics.
- If more than MAX_RECENT_TIMEOUT_RATE (80%) of the past
- RECENT_CIRCUITS (20) time out, we assume the network connection
- has changed, and we discard all buildtimes history and compute
- a new timeout by estimating a new Pareto curve using the
- position on the Pareto Quartile function for the ratio of
- timeouts.
-
- Network connectivity loss is detected by recording a timestamp every
- time Tor either completes a TLS connection or receives a cell. If
- this timestamp is more than CircuitBuildTimeout*RECENT_CIRCUITS/3
- seconds in the past, circuit timeouts are no longer counted.
+ We assume that we've had network connectivity loss if 3 circuits
+ timeout and we've recieved no cells or TLS handshakes since those
+ circuits began. We then set the timeout to 60 seconds and stop
+ counting timeouts.
+
+ If 3 more circuits timeout and the network still has not been
+ live within this new 60 second timeout window, we then discard
+ the previous timeouts during this period from our history.
+
+ To detect changing network conditions, we keep a history of
+ the timeout or non-timeout status of the past RECENT_CIRCUITS (20)
+ that successfully completed more than one hop. If more than 75%
+ of these circuits timeout, we discard all buildtimes history,
+ reset the timeout to 60, and then begin recomputing the timeout.
Testing