On Fri, Apr 11, 2014 at 7:45 AM, George Kadianakis desnacked@riseup.net wrote:
I see. That makes sense, I think.
Good.
I will ponder on this a bit more, and then edit the proposal.
When/if you become convinced, let me know if you want me to draft a patch.
(I would like to think a bit more about how accurate the assumption "relay has been a guard for 0.25 of the rotation period => relay has 0.25 of its bandwidth occupied for guard purposes")
Here's another way to think of it: purely from a load balancing perspective, we would like clients that rotated guards when R had its guard flag to treat R like a guard, and clients that haven't to treat R like it's not a guard.
Using the approximation ("fraction of periods R had the guard flag" = "fraction of nodes that rotated when R had the guard flag") this means that "relay has been a guard for 0.25 of the rotation period => 0.25 of the clients weight the relay as a guard." Since we don't actually want to partition the network this way, the (weighted) average of the two weights will produce the same behavior.