I think I'll have more to say later, but...
On Wed, Mar 26, 2014 at 11:36 AM, George Kadianakis desnacked@riseup.net wrote:
1.3. Age of guard as a factor on guard probabilities
By increasing the guard rotation period we also increase the lack of clients for young guards since clients will rotate guards even more infrequently now (see 'Phase three' of [1]).
We can try to mitigate this phenomenon by giving higher priority to young guards to be picked as guards:
To do so, everytime an authority needs to vote for a guard, it reads a set of consensus documents spanning the past NNN months, and calculates the age of the guard; that is, in how many consensuses its public key has been included in the past.
The authorities include the age of each guard by appending '[SP "Age=" INT]' in the guard's "w" line.
When a client picks a guard, it applies the age of each guard as a weight on its guard probability. XXX unspecified how
I'm pretty sure this section has it backwards from what was the intent of the discussion of "guard age" at the dev meeting. The weight factor should be applied when choosing a "new guard" as a middle or exit node, because it is being underutilized as a guard. This makes it straightforward to apply: if relay R has had the guard flag for fraction k of the last rotation period, then its weight for some other position should be
k*(weight with the guard flag) + (1-k)*(weight without the guard flag)