And network load varies each day (from what I remember, my guards and exits used to vary by at least 10% every day).
=== Avoiding Zeroes ===
I think sbws should also increase 0 bandwidths to 1.
hmm, which one of the bandwidth values?. So far the we round all decimal values and take max(value, 1). The only bandwidth that can still be 0 is the descriptor observed bandwidth, that's it's also rounded and take min 1 after it's multiplied by the ratio. Should the descriptor observed bandwidth be at least 1 before multiplying by the ratio?
I think sbws should also increase 0 bandwidths to 1.
hmm, which one of the bandwidth values?. So far the we round all decimal values and take max(value, 1). The only bandwidth that can still be 0 is the descriptor observed bandwidth, that's it's also rounded and take min 1 after it's multiplied by the ratio. Should the descriptor observed bandwidth be at least 1 before multiplying by the ratio?
Each relay's consensus weight in the vote must be >= 1.
You know the sbws code better than I do, so you can implement that however you want.
The chosen approach suffers from severe non-linear steps between round values:
100000 -> 110000 +10.0% 40000 -> 41000 +2.5%
The proper way to accomplish this is to round by taking the natural
log of the value, round that to the nearest 1/20th for uniform
5% steps and then raise e by the result:
100000 rounds to 98716105000 rounds to 10377798716 -> 103777 +5.1%40000 rounds to 4013542000 rounds to 4219340135 -> 42193 +5.1%1100 rounds to 10961050 rounds to 10431043 -> 1096 +5.1%
Trac: Cc: pastly, juga, teor to pastly, juga, teor, starlight@binnacle.cx Resolution: implemented toN/A Parent: #27108 (moved)toN/A Status: closed to reopened
You are correct: sbws' bandwidth rounding scheme adds a maximum error of -/+ 5%, and a minimum error of +/- 0.5% (as long as the bandwidth is above 200).
So the change in probability for this relay is 5% * 3% = 0.15%, or at most 1 in 667 exit choices
And the overall affect across the network would be 5%, or at most 1 in 20 relay choices, but on average, it would be about 1.4%, or 1 in 70 relay choices
Torflow's existing rounding already affects at most 1 in 200 relay choices, or on average, 1 in 700 relay choices.
If you believe that the added rounding in sbws will have a significant effect on the network, please open a new ticket with appropriate calculations, or send an email to the tor-dev list. Then we will consider modifying proposal 276.
If you think we should implement smoothing in sbws' rounding algorithm, please open a new ticket, and we'll implement the rest of proposal 276.
(The code that was written for this ticket has been release. We don't re-use old tickets for new work: it makes changelogs really confusing.)