perconnbwrate and perconnbwburst consensus params

This commit is contained in:
Roger Dingledine 2010-09-16 00:17:39 -04:00
parent 277295efc1
commit 0ac67bf3c3
3 changed files with 18 additions and 2 deletions

7
changes/bug1947 Normal file
View File

@ -0,0 +1,7 @@
o Minor features:
- Add new "perconnbwrate" and "perconnbwburst" consensus params to
do individual connection-level rate limiting of clients. The torrc
config options with the same names trump the consensus params, if
both are present. Replaces the old "bwconnrate" and "bwconnburst"
consensus params which were broken from 0.2.2.7-alpha through
0.2.2.14-alpha. Closes bug 1947.

View File

@ -1168,6 +1168,15 @@
and 0.2.2.10-alpha recognized a "CircPriorityHalflifeMsec" parameter, and 0.2.2.10-alpha recognized a "CircPriorityHalflifeMsec" parameter,
but mishandled it badly.) but mishandled it badly.)
"perconnbwrate" and "perconnbwburst" -- if set, each relay sets
up a separate token bucket for every client OR connection,
and rate limits that connection indepedently. Typically left
unset, except when used for performance experiments around trac
entry 1750. Only honored by relays running Tor 0.2.2.16-alpha
and later. (Note that relays running 0.2.2.7-alpha through
0.2.2.14-alpha looked for bwconnrate and bwconnburst, but then
did the wrong thing with them; see bug 1830 for details.)
See also "2.4.5. Consensus parameters governing behavior" See also "2.4.5. Consensus parameters governing behavior"
in path-spec.txt for a series of circuit build time related in path-spec.txt for a series of circuit build time related
consensus params. consensus params.

View File

@ -370,10 +370,10 @@ connection_or_update_token_buckets_helper(or_connection_t *conn, int reset,
* bandwidth parameters in the consensus, but allow local config * bandwidth parameters in the consensus, but allow local config
* options to override. */ * options to override. */
rate = options->PerConnBWRate ? (int)options->PerConnBWRate : rate = options->PerConnBWRate ? (int)options->PerConnBWRate :
(int)networkstatus_get_param(NULL, "bwconnrate", (int)networkstatus_get_param(NULL, "perconnbwrate",
(int)options->BandwidthRate); (int)options->BandwidthRate);
burst = options->PerConnBWBurst ? (int)options->PerConnBWBurst : burst = options->PerConnBWBurst ? (int)options->PerConnBWBurst :
(int)networkstatus_get_param(NULL, "bwconnburst", (int)networkstatus_get_param(NULL, "perconnbwburst",
(int)options->BandwidthBurst); (int)options->BandwidthBurst);
} }