From dir-spec.txt: "Guard" -- A router is a possible 'Guard' if its Weighted Fractional Uptime is at least the median for "familiar" active routers, and if its bandwidth is at least median or at least 250KB/s. When this proposal becomes effective, authorities should change the bandwidth threshold for being a guard node to 2000KB/s instead of 250KB/s.
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Child items ...
Show closed items
Linked items 0
Link issues together to show that they're related.
Learn more.
"Guard" -- A router is a possible 'Guard' if its Weighted Fractionall Uptime is at least the median for "familiar" active routers, and if its bandwidth is at least median or at least 250KB/s. To calculate weighted fractional uptime, compute the fraction of time that the router is up in any given day, weighting so that downtime and uptime in the past counts less. A node is 'familiar' if 1/8 of all active nodes have appeared more recently than it, OR it has been around for a few weeks.
And here is the corresponding piece of code from dirserv.c:
We note that the requirement for Fast in the implementation does not match the spec.
I'm wondering what should happen about the if its bandwidth is at least the median or at least 250KB/s (or 2000KB/s as it will soon be). Do we still like the at least the median? We should probably see what the median is on the real network, to see how far it is from 2000KB/s.
Also, Roger, here is the part about the testing network you worried about:
if (options->TestingTorNetwork && routerset_contains_routerstatus(options->TestingDirAuthVoteGuard, rs, 0)) { rs->is_possible_guard = 1;
I changed moria1 to take the 3/4 rather than 1/2 of relays, and now it's
Jul 23 22:50:01.391 [info] dirserv_compute_performance_thresholds(): Cutoffs: For Stable, 824828 sec uptime, 1157130 sec MTBF. For Fast: 15 kilobytes/sec. For Guard: WFU 98.000%, time-known 691200 sec, and bandwidth 2980 or 2060 kilobytes/sec. We have enough stability data.
So the 3/4 spot is right around the 2000 kilounits that we want.
For comparison, that moves moria1 to voting 1182 Guard flags, compared to the 2565 in the consensus.
See my ticket12690 branch, intended for maint-0.2.5.
In particular, somebody should see if my arithmetic wants more bulletproofing.
Also I keep thinking I should lower the number to 1500 kilounits, to get more guards, because surely 1500 is close enough to 2000, and if we cut out a lot of our non-exit guards then the only remaining place for them is the middle hop, which is exactly where diversity isn't so helpful.
As you can see, the one-guard curve of the 1500 graph is a bit slower than the 2000 graph, but the difference is not great and it's definitely better than one guard without any bw restrictions. The main difference is in the [0, 0.1] probability range, for the "unlucky" clients that pick the 1500kb/s guards.
(There's some room for cool analysis here, where we notice that the first hop is the fast stable relays, the third hop is the exit relays, and the middle hop is the fast not-stable relays (the ones that will be guards but aren't yet guards). And the slow relays get left out in the cold. But that's already how things work in practice, since we choose relays by capacity. Carry on.)
I'm going to leave this ticket open and reassign it to Nick, so he can either merge asn's unit tests into master, or not, or whatever he thinks is smart.
Thanks!
Trac: Status: needs_review to assigned Milestone: Tor: 0.2.5.x-final to Tor: 0.2.6.x-final Owner: N/Ato nickm