[tor-commits] [torflow/master] Move the bw auth spec into the bw auth dir.
mikeperry at torproject.org
mikeperry at torproject.org
Tue Oct 25 23:49:56 UTC 2011
commit 80995ba8e2c3acffc576bff9b50fe36bef76a178
Author: Mike Perry <mikeperry-git at fscked.org>
Date: Tue Oct 25 16:46:14 2011 -0700
Move the bw auth spec into the bw auth dir.
---
NetworkScanners/BwAuthority/README.spec.txt | 351 +++++++++++++++++++++++++++
bwauth-spec.txt | 351 ---------------------------
2 files changed, 351 insertions(+), 351 deletions(-)
diff --git a/NetworkScanners/BwAuthority/README.spec.txt b/NetworkScanners/BwAuthority/README.spec.txt
new file mode 100644
index 0000000..8c638cd
--- /dev/null
+++ b/NetworkScanners/BwAuthority/README.spec.txt
@@ -0,0 +1,351 @@
+
+ Bandwidth Scanner specification
+
+
+ "This is Fail City and sqlalchemy is running for mayor"
+ - or -
+ How to Understand What The Heck the Tor Bandwidth Scanners are Doing
+
+
+ Karsten Loesing
+ Mike Perry
+ Aaron Gibson
+
+0. Preliminaries
+
+ The Tor bandwidth scanners measure the bandwidth of relays in the Tor
+ network to adjust the relays' self-advertised bandwidth values. The
+ bandwidth scanners are run by a subset of Tor directory authorities
+ which include the results in their network status votes. Consensus
+ bandwidth weights are then used by Tor clients to make better path
+ selection decisions. The outcome is a better load balanced Tor network
+ with a more efficient use of the available bandwidth capacity by users.
+
+ This document describes the implementation of the bandwidth scanners as
+ part of the Torflow and TorCtl packages. This document has two main
+ sections:
+
+ - Section 1 covers the operation of the continuously running bandwidth
+ scanners to split the set of running relays into workable subsets,
+ select two-hop paths between these relays, perform downloads, and
+ write performance results to disk.
+
+ - Section 2 describes the periodically run step to aggregate results
+ in order to include them in the network status voting process.
+
+ The "interfaces" of this document are Tor's control and SOCKS protocol
+ for performing measurements and Tor's directory protocol for including
+ results in the network status voting process.
+
+ The focus of this document is the functionality of the bandwidth
+ scanners in their default configuration. Whenever there are
+ configuration options that significantly change behavior, this is
+ noted. But this document is not a manual and does not describe any
+ configuration options in detail. Refer to README.BwAuthorities for the
+ operation of bandwidth scanners.
+
+1. Measuring relay bandwidth
+
+ Every directory authority that wants to include bandwidth scanner
+ results in its vote operates a set of four bandwidth scanners running
+ in parallel. These bandwidth scanners divide the Tor network into four
+ partitions from fastest to slowest relays and continuously measure the
+ relays' bandwidth capacity. Each bandwidth scanner runs the steps as
+ described in this section. The results of all four bandwidth scanners
+ are periodically aggregated as described in the next section.
+
+1.1. Configuring and running a Tor client
+
+ All four bandwidth scanners use a single Tor client for their
+ measurements. This Tor client has two non-standard configuration
+ options set. The first:
+
+ FetchUselessDescriptors 1
+
+ configures Tor to fetch descriptors of non-running relays. The second:
+
+ __LeaveStreamsUnattached 1
+
+ instructs Tor to leave streams unattached and let the controller attach
+ new streams to circuits.
+
+
+1.2. Connecting to Tor via its control port
+
+ At startup, the bandwidth scanners connect to the Tor client via its
+ control port using cookie authentication. The bandwidth scanners
+ register for events of the following types:
+
+ - NEWCONSENSUS
+ - NEWDESC
+ - CIRC
+ - STREAM
+ - BW
+ - STREAM_BW
+
+ These events are used to learn about updated Tor directory information
+ and about measurement progress.
+
+1.3. Selecting slices of relays
+
+ Each of the four bandwidth scanners is responsible for a subset of
+ running relays, determined by a fixed percentile range of relays
+ listed in the network status consensus.
+
+ The ordering of the percentiles is determined by sorting the relays by
+ the ratio of their network status consensus bandwidth to their descriptor
+ values. This ensures that relays with similar amounts of measured capacity
+ are measured together. Relays without the "Fast" or "Running" flags are
+ discarded from both the percentile rankings, and from measurement in
+ general.
+
+ By default the four scanners divide the resulting sorted list as follows:
+
+ 1. from 0th to 12th percentile (fastest relays),
+ 2. from 12th to 35th percentile (fast relays),
+ 3. from 35th to 60th percentile (slow relays), and
+ 4. from 60th to 100th percentile (slowest relays).
+
+ The bandwidth scanners further subdivide the share of relays they are
+ responsible for into slices of 50 relays to perform measurements.
+
+ A slice does not consist of 50 fixed relays, but is defined by a
+ percentile range containing 50 relays. The lower bound of the
+ percentile range equals the former upper bound of the previous slice or
+ 0 if this is the first slice. The upper bound is determined from the
+ network status consensus at the time of starting the slice. The upper
+ percentile may exceed the percentile range that the bandwidth scanner
+ is responsible for, whereas the lower percentile isn't. The set of
+ relays contained in the slice can change arbitrarily often while
+ performing measurements.
+
+ Currently, if a slice has no exits, that slice will be simply skipped.
+ # XXX: See bug #4269. -MP
+
+ A bandwidth scanner keeps measuring the bandwidth of the relays in a
+ slice until:
+
+ - every relay in the slice has been selected for measurement at least
+ 5 times, and
+
+ - the number of successful fetches is at least 65% of the possible
+ path combinations (5 x number of relays / 2).
+
+ Note that the second requirement makes no assumptions about successful
+ fetches for a given relay or path. It is just an abstract number to
+ avoid skipping slices in case of temporary network failure.
+
+ The scanners maintain the measurement count for all relays in the current
+ slice, and scan relays with the lowest scan count first.
+
+1.4. Selecting paths for measurements
+
+ Before selecting a new path for a measurement, a bandwidth scanner
+ makes sure that it has a valid consensus, and if it doesn't, it waits
+ for the Tor client to provide one.
+
+ The bandwidth scanners then select a path and instruct Tor to build a
+ circuit that meets the following requirements:
+
+ - All relays for the new path need to be members of the current slice.
+
+ - The minimum consensus bandwidth for relays to be selected is 1
+ KiB/s.
+
+ - Path length is always 2.
+
+ - Nodes are selected uniformly among those with the lowest measurement
+ count for the current slice. Otherwise, there is no preference for
+ relays.
+
+ - Relays in the paths must come from different /16 subnets.
+
+ - Entry relays must have the Running and Fast flags and must not
+ permit exiting to 255.255.255.255:443.
+
+ - Exit relays must have the Running and Fast flags, must not have the
+ BadExit flag, and must permit exiting to 255.255.255.255:443.
+
+ If these restrictions cannot be met with the current slice, the slice is
+ abandoned and the scanner moves on to the next slice.
+ # XXX: See bug #4269 -MP.
+
+1.5. Performing measurements
+
+ Once the circuit is built, the bandwidth scanners download a test file
+ via Tor's SOCKS port using SOCKS protocol version 5.
+
+ All downloads go to same bandwidth authority server.
+
+ All requests are sent to port 443 using https to avoid caching on the
+ exit relay.
+
+ We currently do not authenticate the certificate or verify the download
+ length is sane. # XXX: Bug #4271. -MP.
+
+ The requested resource for performing the measurement varies with the
+ lower percentile of the slice under investigation. The default file
+ sizes by lower percentiles are:
+
+ - 0th to 5th percentile: 8M
+ - 5th to 10th percentile: 4M
+ - 10th to 20th percentile: 2M
+ - 20th to 40th percentile: 1M
+ - 40th to 50th percentile: 512k
+ - 50th to 80th percentile: 256k
+ - 80th to 100th percentile: 128k
+
+ The bandwidth scanners use the following fixed user-agent string for
+ their requests:
+
+ Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; \
+ .NET CLR 1.0.3705; .NET CLR 1.1.4322)
+
+ Unfinished downloads are aborted after 30 minutes.
+
+ For each download, the bandwidth scanners process STREAM and STREAM_BW events
+ with a StreamListener (in TorCtl/SQLSupport.py). The throughput for each
+ stream is defined as the ratio of total read bytes over the time delta between
+ the STREAM NEW timestamp and the STREAM CLOSED event received timestamp:
+
+ bandwidth = (STREAM_BW bytes / (CLOSED timestamp - NEW timestamp)
+
+ We store both read and write bandwidths in the SQL tables, but only use
+ the read bytes for results.
+
+1.6. Writing measurement results
+
+ Once a bandwidth scanner has completed a slice of relays, it writes the
+ measurement results to disk.
+
+ The output file contains information about the slice number, the
+ timestamp of completing the slice, and the measurement results for the
+ measured relays.
+
+ The filename of an output file is derived from the lower and upper
+ slice percentiles and the measurement completion time. The format is
+
+ "bws-" lower percentile ":" upper percentile "-done-" timestamp
+
+ Both lower and upper percentiles are decimal numbers rounded to 1
+ decimal place. The timestamp is formatted "YYYY-MM-DD-HH:MM:SS".
+
+ The first line of an output file contains the slice number:
+
+ "slicenum=" slice number NL
+
+ The second line contains the UNIX timestamp when the output file was
+ written:
+
+ timestamp NL
+
+ Subsequent lines contain the measurement results of all relays in the
+ slice in arbitrary order. There can be at most one such line per relay
+ identity:
+
+ "node_id=" fingerprint SP
+ "nick=" nickname SP
+ "strm_bw=" stream bandwidth SP
+ "filt_bw=" filtered stream bandwidth SP
+ "desc_bw=" descriptor bandwidth SP
+ "ns_bw=" network status bandwidth NL
+
+ The meaning of these fields is as follows: fingerprint is the
+ hex-encoded, upper-case relay identity fingerprint; nickname is the
+ relay's nickname; stream bandwidth and filtered stream bandwidth
+ contain the average measurements; descriptor bandwidth is the average
+ self-advertised bandwidth contained in relay descriptors; and network
+ status bandwidth is the average relay bandwidth contained in network
+ status consensuses.
+
+ The strm_bw field is the average (mean) of all the streams for the relay
+ identified by the fingerprint field.
+
+ The filt_bw field is computed similarly, but only the streams equal to
+ or greater than the strm_bw are counted in order to filter very slow
+ streams due to slow node pairings.
+
+ The nickname field is entirely informational and may change between
+ measurements.
+
+ Only relays with at least 1 successful measurement, non-negative
+ filtered stream bandwidth, and non-negative stream bandwidth are
+ included in the output file.
+
+2. Aggregating scanner results
+
+ Once per hour (via cron), the bandwidth scanner results are aggregated
+ in order to include them in the network status consensus process. This
+ aggregation step reads in all result files produced from the four
+ bandwidth authority children as defined in Section 1.6 and produces a
+ single output file to be read by a tor directory authority.
+
+2.1. Selecting which measurements to include
+
+ Since each bandwidth authority child writes a new file each time it
+ processes a slice, there can be a lot of old files. We automatically
+ exclude files older than 15 days.
+
+ Furthermore, since routers can move between slices, we must record the
+ slice timestamps for each router measurement, to ensure we use only the
+ most recent slice that a router appeared in.
+
+2.2. Computing bandwidth values from measurements
+
+ Once we have determined the most recent measurements for each node, we
+ compute an average of the filt_bw fields over all nodes we have measured.
+
+ These averages are used to produce ratios for each node by dividing the
+ measured value for that node by the network average.
+
+ These ratios are then multiplied by the most recent observed descriptor
+ bandwidth we have available for each node, to produce a new value for
+ the network status consensus process.
+
+ In this way, the resulting network status consensus bandwidth values
+ are effectively re-weighted proportional to how much faster the node
+ was as compared to the rest of the network.
+
+2.3. Ensuring and measuring progress
+
+ To ensure that the scanners are making progress, we perform two checks.
+
+ First, we read in the previous consensus over the Tor control port. If we
+ have measurements for less than 60% of the current consensus, we do not
+ produce a result file. This is done to ensure that we have an accurate
+ network average before computing ratios and producing measurement results.
+
+ Second, we collect the most recent slice timestamp for each scanner child.
+ If the most recent slice timestamp is older than 1.5 days, we print out a
+ warning that is mailed to the scanner operator. We still produce a result
+ file in this case.
+
+2.4. Feedback mechanisms
+
+# BETA, GUARD_BETA, ALPHA, and GUARD_ALPHA are all set to 0 in the default
+# configuration. Is the plan to change their values and use the more
+# complex aggregation mechanism anytime soon? Or were they only in the
+# code to run experiments and should go away? -KL
+
+# I am going to change how this stuff works for bug #1976. -MP.
+
+2.5. Result format
+
+ The final output file for use by the directory authorities is comprised of
+ lines of the following format:
+
+ "node_id=" fingerprint SP
+ "bw=" new_bandwidth SP
+ "diff=" (new bandwidth) - (descriptor bandwidth) SP
+ "nick=" nickname SP
+ "measured_at=" slice timestamp NL
+
+2.6. Usage by directory authorities
+
+ The Tor directory authorities use only the node_id and the bw fields.
+ The rest of the fields are informative only.
+
+ The directory authorities take the median of all votes for the bw field,
+ and publish that value as the consensus bandwidth.
+
+
diff --git a/bwauth-spec.txt b/bwauth-spec.txt
deleted file mode 100644
index 8c638cd..0000000
--- a/bwauth-spec.txt
+++ /dev/null
@@ -1,351 +0,0 @@
-
- Bandwidth Scanner specification
-
-
- "This is Fail City and sqlalchemy is running for mayor"
- - or -
- How to Understand What The Heck the Tor Bandwidth Scanners are Doing
-
-
- Karsten Loesing
- Mike Perry
- Aaron Gibson
-
-0. Preliminaries
-
- The Tor bandwidth scanners measure the bandwidth of relays in the Tor
- network to adjust the relays' self-advertised bandwidth values. The
- bandwidth scanners are run by a subset of Tor directory authorities
- which include the results in their network status votes. Consensus
- bandwidth weights are then used by Tor clients to make better path
- selection decisions. The outcome is a better load balanced Tor network
- with a more efficient use of the available bandwidth capacity by users.
-
- This document describes the implementation of the bandwidth scanners as
- part of the Torflow and TorCtl packages. This document has two main
- sections:
-
- - Section 1 covers the operation of the continuously running bandwidth
- scanners to split the set of running relays into workable subsets,
- select two-hop paths between these relays, perform downloads, and
- write performance results to disk.
-
- - Section 2 describes the periodically run step to aggregate results
- in order to include them in the network status voting process.
-
- The "interfaces" of this document are Tor's control and SOCKS protocol
- for performing measurements and Tor's directory protocol for including
- results in the network status voting process.
-
- The focus of this document is the functionality of the bandwidth
- scanners in their default configuration. Whenever there are
- configuration options that significantly change behavior, this is
- noted. But this document is not a manual and does not describe any
- configuration options in detail. Refer to README.BwAuthorities for the
- operation of bandwidth scanners.
-
-1. Measuring relay bandwidth
-
- Every directory authority that wants to include bandwidth scanner
- results in its vote operates a set of four bandwidth scanners running
- in parallel. These bandwidth scanners divide the Tor network into four
- partitions from fastest to slowest relays and continuously measure the
- relays' bandwidth capacity. Each bandwidth scanner runs the steps as
- described in this section. The results of all four bandwidth scanners
- are periodically aggregated as described in the next section.
-
-1.1. Configuring and running a Tor client
-
- All four bandwidth scanners use a single Tor client for their
- measurements. This Tor client has two non-standard configuration
- options set. The first:
-
- FetchUselessDescriptors 1
-
- configures Tor to fetch descriptors of non-running relays. The second:
-
- __LeaveStreamsUnattached 1
-
- instructs Tor to leave streams unattached and let the controller attach
- new streams to circuits.
-
-
-1.2. Connecting to Tor via its control port
-
- At startup, the bandwidth scanners connect to the Tor client via its
- control port using cookie authentication. The bandwidth scanners
- register for events of the following types:
-
- - NEWCONSENSUS
- - NEWDESC
- - CIRC
- - STREAM
- - BW
- - STREAM_BW
-
- These events are used to learn about updated Tor directory information
- and about measurement progress.
-
-1.3. Selecting slices of relays
-
- Each of the four bandwidth scanners is responsible for a subset of
- running relays, determined by a fixed percentile range of relays
- listed in the network status consensus.
-
- The ordering of the percentiles is determined by sorting the relays by
- the ratio of their network status consensus bandwidth to their descriptor
- values. This ensures that relays with similar amounts of measured capacity
- are measured together. Relays without the "Fast" or "Running" flags are
- discarded from both the percentile rankings, and from measurement in
- general.
-
- By default the four scanners divide the resulting sorted list as follows:
-
- 1. from 0th to 12th percentile (fastest relays),
- 2. from 12th to 35th percentile (fast relays),
- 3. from 35th to 60th percentile (slow relays), and
- 4. from 60th to 100th percentile (slowest relays).
-
- The bandwidth scanners further subdivide the share of relays they are
- responsible for into slices of 50 relays to perform measurements.
-
- A slice does not consist of 50 fixed relays, but is defined by a
- percentile range containing 50 relays. The lower bound of the
- percentile range equals the former upper bound of the previous slice or
- 0 if this is the first slice. The upper bound is determined from the
- network status consensus at the time of starting the slice. The upper
- percentile may exceed the percentile range that the bandwidth scanner
- is responsible for, whereas the lower percentile isn't. The set of
- relays contained in the slice can change arbitrarily often while
- performing measurements.
-
- Currently, if a slice has no exits, that slice will be simply skipped.
- # XXX: See bug #4269. -MP
-
- A bandwidth scanner keeps measuring the bandwidth of the relays in a
- slice until:
-
- - every relay in the slice has been selected for measurement at least
- 5 times, and
-
- - the number of successful fetches is at least 65% of the possible
- path combinations (5 x number of relays / 2).
-
- Note that the second requirement makes no assumptions about successful
- fetches for a given relay or path. It is just an abstract number to
- avoid skipping slices in case of temporary network failure.
-
- The scanners maintain the measurement count for all relays in the current
- slice, and scan relays with the lowest scan count first.
-
-1.4. Selecting paths for measurements
-
- Before selecting a new path for a measurement, a bandwidth scanner
- makes sure that it has a valid consensus, and if it doesn't, it waits
- for the Tor client to provide one.
-
- The bandwidth scanners then select a path and instruct Tor to build a
- circuit that meets the following requirements:
-
- - All relays for the new path need to be members of the current slice.
-
- - The minimum consensus bandwidth for relays to be selected is 1
- KiB/s.
-
- - Path length is always 2.
-
- - Nodes are selected uniformly among those with the lowest measurement
- count for the current slice. Otherwise, there is no preference for
- relays.
-
- - Relays in the paths must come from different /16 subnets.
-
- - Entry relays must have the Running and Fast flags and must not
- permit exiting to 255.255.255.255:443.
-
- - Exit relays must have the Running and Fast flags, must not have the
- BadExit flag, and must permit exiting to 255.255.255.255:443.
-
- If these restrictions cannot be met with the current slice, the slice is
- abandoned and the scanner moves on to the next slice.
- # XXX: See bug #4269 -MP.
-
-1.5. Performing measurements
-
- Once the circuit is built, the bandwidth scanners download a test file
- via Tor's SOCKS port using SOCKS protocol version 5.
-
- All downloads go to same bandwidth authority server.
-
- All requests are sent to port 443 using https to avoid caching on the
- exit relay.
-
- We currently do not authenticate the certificate or verify the download
- length is sane. # XXX: Bug #4271. -MP.
-
- The requested resource for performing the measurement varies with the
- lower percentile of the slice under investigation. The default file
- sizes by lower percentiles are:
-
- - 0th to 5th percentile: 8M
- - 5th to 10th percentile: 4M
- - 10th to 20th percentile: 2M
- - 20th to 40th percentile: 1M
- - 40th to 50th percentile: 512k
- - 50th to 80th percentile: 256k
- - 80th to 100th percentile: 128k
-
- The bandwidth scanners use the following fixed user-agent string for
- their requests:
-
- Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; \
- .NET CLR 1.0.3705; .NET CLR 1.1.4322)
-
- Unfinished downloads are aborted after 30 minutes.
-
- For each download, the bandwidth scanners process STREAM and STREAM_BW events
- with a StreamListener (in TorCtl/SQLSupport.py). The throughput for each
- stream is defined as the ratio of total read bytes over the time delta between
- the STREAM NEW timestamp and the STREAM CLOSED event received timestamp:
-
- bandwidth = (STREAM_BW bytes / (CLOSED timestamp - NEW timestamp)
-
- We store both read and write bandwidths in the SQL tables, but only use
- the read bytes for results.
-
-1.6. Writing measurement results
-
- Once a bandwidth scanner has completed a slice of relays, it writes the
- measurement results to disk.
-
- The output file contains information about the slice number, the
- timestamp of completing the slice, and the measurement results for the
- measured relays.
-
- The filename of an output file is derived from the lower and upper
- slice percentiles and the measurement completion time. The format is
-
- "bws-" lower percentile ":" upper percentile "-done-" timestamp
-
- Both lower and upper percentiles are decimal numbers rounded to 1
- decimal place. The timestamp is formatted "YYYY-MM-DD-HH:MM:SS".
-
- The first line of an output file contains the slice number:
-
- "slicenum=" slice number NL
-
- The second line contains the UNIX timestamp when the output file was
- written:
-
- timestamp NL
-
- Subsequent lines contain the measurement results of all relays in the
- slice in arbitrary order. There can be at most one such line per relay
- identity:
-
- "node_id=" fingerprint SP
- "nick=" nickname SP
- "strm_bw=" stream bandwidth SP
- "filt_bw=" filtered stream bandwidth SP
- "desc_bw=" descriptor bandwidth SP
- "ns_bw=" network status bandwidth NL
-
- The meaning of these fields is as follows: fingerprint is the
- hex-encoded, upper-case relay identity fingerprint; nickname is the
- relay's nickname; stream bandwidth and filtered stream bandwidth
- contain the average measurements; descriptor bandwidth is the average
- self-advertised bandwidth contained in relay descriptors; and network
- status bandwidth is the average relay bandwidth contained in network
- status consensuses.
-
- The strm_bw field is the average (mean) of all the streams for the relay
- identified by the fingerprint field.
-
- The filt_bw field is computed similarly, but only the streams equal to
- or greater than the strm_bw are counted in order to filter very slow
- streams due to slow node pairings.
-
- The nickname field is entirely informational and may change between
- measurements.
-
- Only relays with at least 1 successful measurement, non-negative
- filtered stream bandwidth, and non-negative stream bandwidth are
- included in the output file.
-
-2. Aggregating scanner results
-
- Once per hour (via cron), the bandwidth scanner results are aggregated
- in order to include them in the network status consensus process. This
- aggregation step reads in all result files produced from the four
- bandwidth authority children as defined in Section 1.6 and produces a
- single output file to be read by a tor directory authority.
-
-2.1. Selecting which measurements to include
-
- Since each bandwidth authority child writes a new file each time it
- processes a slice, there can be a lot of old files. We automatically
- exclude files older than 15 days.
-
- Furthermore, since routers can move between slices, we must record the
- slice timestamps for each router measurement, to ensure we use only the
- most recent slice that a router appeared in.
-
-2.2. Computing bandwidth values from measurements
-
- Once we have determined the most recent measurements for each node, we
- compute an average of the filt_bw fields over all nodes we have measured.
-
- These averages are used to produce ratios for each node by dividing the
- measured value for that node by the network average.
-
- These ratios are then multiplied by the most recent observed descriptor
- bandwidth we have available for each node, to produce a new value for
- the network status consensus process.
-
- In this way, the resulting network status consensus bandwidth values
- are effectively re-weighted proportional to how much faster the node
- was as compared to the rest of the network.
-
-2.3. Ensuring and measuring progress
-
- To ensure that the scanners are making progress, we perform two checks.
-
- First, we read in the previous consensus over the Tor control port. If we
- have measurements for less than 60% of the current consensus, we do not
- produce a result file. This is done to ensure that we have an accurate
- network average before computing ratios and producing measurement results.
-
- Second, we collect the most recent slice timestamp for each scanner child.
- If the most recent slice timestamp is older than 1.5 days, we print out a
- warning that is mailed to the scanner operator. We still produce a result
- file in this case.
-
-2.4. Feedback mechanisms
-
-# BETA, GUARD_BETA, ALPHA, and GUARD_ALPHA are all set to 0 in the default
-# configuration. Is the plan to change their values and use the more
-# complex aggregation mechanism anytime soon? Or were they only in the
-# code to run experiments and should go away? -KL
-
-# I am going to change how this stuff works for bug #1976. -MP.
-
-2.5. Result format
-
- The final output file for use by the directory authorities is comprised of
- lines of the following format:
-
- "node_id=" fingerprint SP
- "bw=" new_bandwidth SP
- "diff=" (new bandwidth) - (descriptor bandwidth) SP
- "nick=" nickname SP
- "measured_at=" slice timestamp NL
-
-2.6. Usage by directory authorities
-
- The Tor directory authorities use only the node_id and the bw fields.
- The rest of the fields are informative only.
-
- The directory authorities take the median of all votes for the bw field,
- and publish that value as the consensus bandwidth.
-
-
More information about the tor-commits
mailing list