[tor-commits] [chutney/master] networks: Add extra authorities so relays bootstrap

teor at torproject.org teor at torproject.org
Fri Mar 13 01:11:26 UTC 2020


commit ebf320d72927af5c6b2e8474ca844b16cbbe4dbf
Author: teor <teor at torproject.org>
Date:   Wed Feb 19 16:20:12 2020 +1000

    networks: Add extra authorities so relays bootstrap
    
    Authorities and relays need 3 *other* authorities/relays to bootstrap.
    And Tor 0.3.5 needs 5 authorities/relays in the consensus.
    
    We add authorities, because some networks only have one relay or exit,
    to make sure all paths go through that relay/exit.
    
    Part of 33232.
---
 networks/basic-min        | 6 +++++-
 networks/bridges+ipv6-min | 6 ++++--
 networks/bridges-min      | 8 ++++++--
 networks/hs-v2-min        | 5 ++++-
 networks/hs-v23-min       | 5 ++++-
 networks/hs-v3-min        | 5 ++++-
 networks/ipv6-exit-min    | 6 +++++-
 7 files changed, 32 insertions(+), 9 deletions(-)

diff --git a/networks/basic-min b/networks/basic-min
index e5e0187..ffcf300 100644
--- a/networks/basic-min
+++ b/networks/basic-min
@@ -7,6 +7,10 @@ Client = Node(tag="c", client=1, torrc="client.tmpl")
 # TestingDirAuthVoteGuard * may need to be used in small networks
 
 # The minimum number of authorities/relays/exits is 3, the minimum path length
-NODES = Authority.getN(2) + ExitRelay.getN(1) + Client.getN(1)
+# But relays and authorities need 1 extra node, because they won't make a path
+# that includes themselves.
+# Due to microdec download issues, tor 0.3.5 needs at least 5
+# authorities/relays/exits in the consensus.
+NODES = Authority.getN(4) + ExitRelay.getN(1) + Client.getN(1)
 
 ConfigureNodes(NODES)
diff --git a/networks/bridges+ipv6-min b/networks/bridges+ipv6-min
index 34c2063..cdf6dc7 100644
--- a/networks/bridges+ipv6-min
+++ b/networks/bridges+ipv6-min
@@ -15,8 +15,10 @@ BridgeClient = Node(tag="bc", client=1, bridgeclient=1, torrc="bridgeclient.tmpl
 # is only an issue for the exit bootstrapping)
 
 # The minimum number of authorities/relays/exits is 3, the minimum path length
-# But bridge networks with 3 relays don't bootstrap, so we use 4
-NODES = Authority.getN(1) + BridgeAuthority.getN(1) + ExitRelay.getN(1) + \
+# But relays and authorities need 1 extra node, because they won't make a path
+# that includes themselves.
+# (Bridges don't count, because they're not in the consensus.)
+NODES = Authority.getN(2) + BridgeAuthority.getN(1) + ExitRelay.getN(1) + \
         BridgeIPv6.getN(1) + BridgeClient.getN(1)
 
 ConfigureNodes(NODES)
diff --git a/networks/bridges-min b/networks/bridges-min
index 6ad3c75..f8ec732 100644
--- a/networks/bridges-min
+++ b/networks/bridges-min
@@ -13,8 +13,12 @@ BridgeClient = Node(tag="bc", client=1, bridgeclient=1, torrc="bridgeclient.tmpl
 # is only an issue for the exit bootstrapping)
 
 # The minimum number of authorities/relays/exits is 3, the minimum path length
-# But bridge networks with 3 relays don't bootstrap, so we use 4
-NODES = Authority.getN(1) + BridgeAuthority.getN(1) + ExitRelay.getN(1) + \
+# But relays and authorities need 1 extra node, because they won't make a path
+# that includes themselves.
+# (Bridges don't count, because they're not in the consensus.)
+# Due to microdec download issues, tor 0.3.5 needs at least 5
+# authorities/relays/exits in the consensus.
+NODES = Authority.getN(3) + BridgeAuthority.getN(1) + ExitRelay.getN(1) + \
         Bridge.getN(1) + BridgeClient.getN(1)
 
 ConfigureNodes(NODES)
diff --git a/networks/hs-v2-min b/networks/hs-v2-min
index 461c56e..e7eb52c 100644
--- a/networks/hs-v2-min
+++ b/networks/hs-v2-min
@@ -9,7 +9,10 @@ HS = Node(tag="h", hs=1, torrc="hs.tmpl")
 # Since only 25% of relays get the guard flag,
 # TestingDirAuthVoteGuard * may need to be used in small networks
 
-# A hidden service needs 5 authorities/relays to ensure it can build HS
+# The minimum number of authorities/relays/exits is 3, the minimum path length
+# But relays and authorities need 1 extra node, because they won't make a path
+# that includes themselves.
+# A hidden service also needs 5 authorities/relays to ensure it can build HS
 # connections:
 # a minimum path length of 3, plus the client-nominated rendezvous point,
 # plus a seperate introduction point
diff --git a/networks/hs-v23-min b/networks/hs-v23-min
index 4732520..5c6ac8e 100644
--- a/networks/hs-v23-min
+++ b/networks/hs-v23-min
@@ -8,7 +8,10 @@ HSv3 = Node(tag="h", hs=1, torrc="hs-v3.tmpl")
 # Since only 25% of relays get the guard flag,
 # TestingDirAuthVoteGuard * may need to be used in small networks
 
-# A hidden service needs 5 authorities/relays to ensure it can build HS
+# The minimum number of authorities/relays/exits is 3, the minimum path length
+# But relays and authorities need 1 extra node, because they won't make a path
+# that includes themselves.
+# A hidden service also needs 5 authorities/relays to ensure it can build HS
 # connections:
 # a minimum path length of 3, plus the client-nominated rendezvous point,
 # plus a seperate introduction point
diff --git a/networks/hs-v3-min b/networks/hs-v3-min
index 20709d9..56f15cb 100644
--- a/networks/hs-v3-min
+++ b/networks/hs-v3-min
@@ -7,7 +7,10 @@ HS = Node(tag="h", hs=1, torrc="hs-v3.tmpl")
 # Since only 25% of relays get the guard flag,
 # TestingDirAuthVoteGuard * may need to be used in small networks
 
-# A hidden service needs 5 authorities/relays to ensure it can build HS
+# The minimum number of authorities/relays/exits is 3, the minimum path length
+# But relays and authorities need 1 extra node, because they won't make a path
+# that includes themselves.
+# A hidden service also needs 5 authorities/relays to ensure it can build HS
 # connections:
 # a minimum path length of 3, plus the client-nominated rendezvous point,
 # plus a seperate introduction point
diff --git a/networks/ipv6-exit-min b/networks/ipv6-exit-min
index df54574..2771298 100644
--- a/networks/ipv6-exit-min
+++ b/networks/ipv6-exit-min
@@ -8,6 +8,10 @@ Client = Node(tag="c", client=1, torrc="client.tmpl")
 # TestingDirAuthVoteGuard * may need to be used in small networks
 
 # The minimum number of authorities/relays/exits is 3, the minimum path length
-NODES = Authority.getN(2) + IPv6ExitRelay.getN(1) + Client.getN(1)
+# But relays and authorities need 1 extra node, because they won't make a path
+# that includes themselves.
+# Due to microdec download issues, tor 0.3.5 needs at least 5
+# authorities/relays/exits in the consensus.
+NODES = Authority.getN(4) + IPv6ExitRelay.getN(1) + Client.getN(1)
 
 ConfigureNodes(NODES)





More information about the tor-commits mailing list