[tor-commits] [torspec/master] Document consensus method 31 as a fix for bug #19011.

asn at torproject.org asn at torproject.org
Wed Jan 13 13:27:22 UTC 2021


commit a28dc7176d4e70313d45361e3e1f9d3999098a75
Author: Nick Mathewson <nickm at torproject.org>
Date:   Wed Dec 9 13:18:43 2020 -0500

    Document consensus method 31 as a fix for bug #19011.
---
 dir-spec.txt | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/dir-spec.txt b/dir-spec.txt
index 148163d..668ff32 100644
--- a/dir-spec.txt
+++ b/dir-spec.txt
@@ -2805,6 +2805,10 @@
         * If consensus method 30 or later is used, the base64 encoded
           ntor-onion-key does not include the trailing = sign.
 
+        * If consensus method 31 or later is used, authorities parse the
+          "bwweightscale" and "maxunmeasuredbw" parameters correctly when
+          computing votes.
+
      The signatures at the end of a consensus document are sorted in
      ascending order by identity digest.
 
@@ -2891,6 +2895,8 @@
      "28" -- Removes "a" lines from microdescriptors.
      "29" -- Canonicalizes families in microdescriptors.
      "30" -- Removes padding from ntor-onion-key.
+     "31" -- Uses correct parsing for bwweightscale and maxunmeasuredbw
+             when computing weights
 
    Before generating a consensus, an authority must decide which consensus
    method to use.  To do this, it looks for the highest version number
@@ -2938,7 +2944,11 @@
 
 3.8.3. Computing Bandwidth Weights
 
-  Let weight_scale = 10000
+  Let weight_scale = 10000, or the value of the "bwweightscale" parameter.
+  (Before consensus method 31 there was a bug in parsing bwweightscale, so
+  that if there were any consensus parameters after it alphabetically, it
+  would always be treated as 10000. A similar bug existed for
+  "maxunmeasuredbw".)
 
   Starting with consensus method 26, G, M, E, and D are initialized to 1 and
   T to 4. Prior consensus methods initialize them all to 0. With this change,
@@ -3091,7 +3101,8 @@
 
   To ensure consensus, all calculations are performed using integer math
   with a fixed precision determined by the bwweightscale consensus
-  parameter (defaults at 10000, Min: 1, Max: INT32_MAX).
+  parameter (defaults at 10000, Min: 1, Max: INT32_MAX). (See note above
+  about parsing bug in bwweightscale before consensus method 31.)
 
   For future balancing improvements, Tor clients support 11 additional weights
   for directory requests and middle weighting. These weights are currently





More information about the tor-commits mailing list