Implementation of guard node proposal: * Switch to one guard per client ** Look into decide_num_guards(). ** See if setting NumEntryGuards=1 breaks any assumption of the rest of the code. ** Implementation depends on whether we pick alternative behavior of section 1.1.1 or not. * Increase guard rotation period ** Play with MIN_GUARD_LIFETIME etc. ** Switch GuardLifetime consensus option in authorities ** Implementation depends on whether we pick alternative behavior of section 1.2.1 or not. * Raise bw thresholds for guard ** See set_routerstatus_from_routerinfo() and AuthDirGuardBWGuarantee etc. ** How to test: Make fake network and see which guards are eligible to become guards * Prioritize young guards for non-guard tasks ** Download and parse old consensuses in an external script, write file with results, have little-t-tor read the results. See how bw-auths do this. ** Bandwidth authorities work like this: dirserv_read_measured_bandwidths() https://gitweb.torproject.org/torflow.git/blob/HEAD:/NetworkScanners/BwAuthority/README.spec.txt#l333 ** How to test: *** How to test the external script: Make artificial data sets of consensuses and see if the external script parses them well **** Test multiple data sets. (Guard in all the consensuses / Guard in no consensus / Guard in a few consesuses) *** How to test Tor: Create artificial guard age results file, give the test a fake network (some relays) and see if Tor generates the right bandwidth weights.