Make MinTimeToReportBandwidth a testing-only option (and rename it)

This commit is contained in:
Nick Mathewson 2021-05-11 15:49:00 -04:00
parent 2ae24d003d
commit 9d7fca2306
7 changed files with 13 additions and 27 deletions

View File

@ -1,5 +1,6 @@
o Minor features (bandwidth reporting): o Minor features (testing):
- Relays can now use the MinTimeToReportBandwidth option to change - On a testing network, relays can now use the
TestingMinTimeToReportBandwidth option to change
the smallest amount of time over which they're willing to report the smallest amount of time over which they're willing to report
their observed maximum bandwidth. Previously, this was fixed their observed maximum bandwidth. Previously, this was fixed
at 1 day. For safety, values under 2 hours are only supported on at 1 day. For safety, values under 2 hours are only supported on

View File

@ -2448,13 +2448,6 @@ is non-zero):
If we have more onionskins queued for processing than we can process in If we have more onionskins queued for processing than we can process in
this amount of time, reject new ones. (Default: 1750 msec) this amount of time, reject new ones. (Default: 1750 msec)
[[MinTimeToReportBandwidth]] **MinTimeToReportBandwidth** __N__ **seconds**|**minutes**|**hours**::
Do not report our measurements for our maximum observed bandwidth for any
time period that has lasted for less than this amount of time.
Setting this option too low can enable traffic analysis, and is
not permitted except on testing networks. Values over 1 day have
no effect. (Default: 1 day)
[[MyFamily]] **MyFamily** __fingerprint__,__fingerprint__,...:: [[MyFamily]] **MyFamily** __fingerprint__,__fingerprint__,...::
Declare that this Tor relay is controlled or administered by a group or Declare that this Tor relay is controlled or administered by a group or
organization identical or similar to that of the other relays, defined by organization identical or similar to that of the other relays, defined by
@ -3602,6 +3595,11 @@ The following options are used for running a testing Tor network.
Minimum value for the Fast flag. Overrides the ordinary minimum taken Minimum value for the Fast flag. Overrides the ordinary minimum taken
from the consensus when TestingTorNetwork is set. (Default: 0.) from the consensus when TestingTorNetwork is set. (Default: 0.)
[[TestingMinTimeToReportBandwidth]] **TestingMinTimeToReportBandwidth** __N__ **seconds**|**minutes**|**hours**::
Do not report our measurements for our maximum observed bandwidth for any
time period that has lasted for less than this amount of time.
Values over 1 day have no effect. (Default: 1 day)
[[TestingServerConsensusDownloadInitialDelay]] **TestingServerConsensusDownloadInitialDelay** __N__:: [[TestingServerConsensusDownloadInitialDelay]] **TestingServerConsensusDownloadInitialDelay** __N__::
Initial delay in seconds for when servers should download consensuses. Changing this Initial delay in seconds for when servers should download consensuses. Changing this
requires that **TestingTorNetwork** is set. (Default: 0) requires that **TestingTorNetwork** is set. (Default: 0)

View File

@ -563,7 +563,7 @@ static const config_var_t option_vars_[] = {
V(MaxUnparseableDescSizeToLog, MEMUNIT, "10 MB"), V(MaxUnparseableDescSizeToLog, MEMUNIT, "10 MB"),
VPORT(MetricsPort), VPORT(MetricsPort),
V(MetricsPortPolicy, LINELIST, NULL), V(MetricsPortPolicy, LINELIST, NULL),
V(MinTimeToReportBandwidth, INTERVAL, "1 day"), V(TestingMinTimeToReportBandwidth, INTERVAL, "1 day"),
VAR("MyFamily", LINELIST, MyFamily_lines, NULL), VAR("MyFamily", LINELIST, MyFamily_lines, NULL),
V(NewCircuitPeriod, INTERVAL, "30 seconds"), V(NewCircuitPeriod, INTERVAL, "30 seconds"),
OBSOLETE("NamingAuthoritativeDirectory"), OBSOLETE("NamingAuthoritativeDirectory"),
@ -3712,13 +3712,6 @@ options_validate_cb(const void *old_options_, void *options_, char **msg)
options->HeartbeatPeriod = MIN_HEARTBEAT_PERIOD; options->HeartbeatPeriod = MIN_HEARTBEAT_PERIOD;
} }
if (options->MinTimeToReportBandwidth < MIN_MIN_TIME_TO_REPORT_BW &&
!options->TestingTorNetwork) {
log_warn(LD_CONFIG, "MinTimeToReportBandwidth is too short; "
"raising to %d seconds.", MIN_MIN_TIME_TO_REPORT_BW);
options->MinTimeToReportBandwidth = MIN_MIN_TIME_TO_REPORT_BW;
}
if (options->KeepalivePeriod < 1) if (options->KeepalivePeriod < 1)
REJECT("KeepalivePeriod option must be positive."); REJECT("KeepalivePeriod option must be positive.");
@ -3994,6 +3987,7 @@ options_validate_cb(const void *old_options_, void *options_, char **msg)
CHECK_DEFAULT(TestingSigningKeySlop); CHECK_DEFAULT(TestingSigningKeySlop);
CHECK_DEFAULT(TestingAuthKeySlop); CHECK_DEFAULT(TestingAuthKeySlop);
CHECK_DEFAULT(TestingLinkKeySlop); CHECK_DEFAULT(TestingLinkKeySlop);
CHECK_DEFAULT(TestingMinTimeToReportBandwidth);
or_options_free(dflt_options); or_options_free(dflt_options);
} }
#undef CHECK_DEFAULT #undef CHECK_DEFAULT

View File

@ -24,13 +24,6 @@
* expose more information than we're comfortable with. */ * expose more information than we're comfortable with. */
#define MIN_HEARTBEAT_PERIOD (30*60) #define MIN_HEARTBEAT_PERIOD (30*60)
/**
* Lowest allowable value for MinTimeToReportBandwidth on a non-testing
* network; if this is too low we might report detail that is too
* fine-grained.
**/
#define MIN_MIN_TIME_TO_REPORT_BW (2*60*60)
/** Maximum default value for MaxMemInQueues, in bytes. */ /** Maximum default value for MaxMemInQueues, in bytes. */
#if SIZEOF_VOID_P >= 8 #if SIZEOF_VOID_P >= 8
#define MAX_DEFAULT_MEMORY_QUEUE_SIZE (UINT64_C(8) << 30) #define MAX_DEFAULT_MEMORY_QUEUE_SIZE (UINT64_C(8) << 30)

View File

@ -1084,7 +1084,7 @@ struct or_options_t {
/** How far must we be into the current bandwidth-measurement period to /** How far must we be into the current bandwidth-measurement period to
* report bandwidth observations from this period? */ * report bandwidth observations from this period? */
int MinTimeToReportBandwidth; int TestingMinTimeToReportBandwidth;
/** /**
* Configuration objects for individual modules. * Configuration objects for individual modules.

View File

@ -19,7 +19,7 @@
{ "TestingV3AuthInitialDistDelay", "20 seconds" }, { "TestingV3AuthInitialDistDelay", "20 seconds" },
{ "TestingAuthDirTimeToLearnReachability", "0 minutes" }, { "TestingAuthDirTimeToLearnReachability", "0 minutes" },
{ "MinUptimeHidServDirectoryV2", "0 minutes" }, { "MinUptimeHidServDirectoryV2", "0 minutes" },
{ "MinTimeToReportBandwidth", "0 seconds" }, { "TestingMinTimeToReportBandwidth", "0 seconds" },
{ "TestingServerDownloadInitialDelay", "0" }, { "TestingServerDownloadInitialDelay", "0" },
{ "TestingClientDownloadInitialDelay", "0" }, { "TestingClientDownloadInitialDelay", "0" },
{ "TestingServerConsensusDownloadInitialDelay", "0" }, { "TestingServerConsensusDownloadInitialDelay", "0" },

View File

@ -241,7 +241,7 @@ MOCK_IMPL(int,
bwhist_bandwidth_assess,(void)) bwhist_bandwidth_assess,(void))
{ {
uint64_t w,r; uint64_t w,r;
int min_obs_time = get_options()->MinTimeToReportBandwidth; int min_obs_time = get_options()->TestingMinTimeToReportBandwidth;
r = find_largest_max(read_array, min_obs_time); r = find_largest_max(read_array, min_obs_time);
w = find_largest_max(write_array, min_obs_time); w = find_largest_max(write_array, min_obs_time);
if (r>w) if (r>w)