Implement full circuit-build-timeout logic

Tor has a complicated set of logic that measures how long circuits take to build, and then adjusts Tor's time-out requirements accordingly. This is important for performance (and possibily security) properties.

  • Basic pareto estimator backend
  • Set parameters from consensus
  • Record measurements from circuits as they are built.
  • Record timeouts from circuits as they time out.
  • Compute circuit timeouts correctly, given different circuit lengths.
  • Actually use timeout estimates to decide when to timeout/abandon a circuit.
  • Use correct "doubling" algorithm from path-spec 2.4.5.
  • Break histogram-bin ties correctly.
  • Make sure all consensus paremeters are implemented.
  • Ability to switch (or reconfigure) estimators while running
  • Actually use pareto estimator
  • Testing.

These are a bit tricky and will want to be separate tickets:

  • #142 (closed): Add a function to tell us when we last saw incoming network activity.
  • #143 (closed): Persistence for build-time data
  • #144 (closed): Get notification about changes in network parameters.
  • #145 (closed): Launch testing circuits as needed.
Edited Jul 19, 2021 by Nick Mathewson
Assignee Loading
Time tracking Loading