[tor-commits] [chutney/master] Speed up tor bootstrap phase (chutney portion)

nickm at torproject.org nickm at torproject.org
Tue Dec 30 14:58:02 UTC 2014


commit 05d9d63548dff686f66b2f1322a7f80e452462a1
Author: teor <teor2345 at gmail.com>
Date:   Sat Dec 20 11:35:00 2014 +1100

    Speed up tor bootstrap phase (chutney portion)
    
    Speed up the tor bootstrap by modifying both tor and chutney.
    
    Comprehensive bootstrap: (30s)
      Reduce the consensus interval to 10 seconds
       Depends on corresponding tor changes
      Don't require any bandwith for an exit flag
       Depends on corresponding tor changes
    
    Fast Bootstrap: (10s)
      Assume that everything is reachable and an exit
      Start building paths once the minimum number of descriptors are available
      Reduce consensus validity to 2 intervals
    
    Also make other minor config fixes
    
    Resolves bug 13823. Tests resolution of (tor) bug 13718 and children.
---
 torrc_templates/authority.tmpl       |   33 +++++++++++++++++++++++++++------
 torrc_templates/bridge-v6.tmpl       |    2 +-
 torrc_templates/bridge.tmpl          |    7 ++-----
 torrc_templates/bridgeauthority.tmpl |    2 +-
 torrc_templates/bridgeclient.tmpl    |   13 ++++++++++++-
 torrc_templates/client.tmpl          |    8 +++++++-
 torrc_templates/common.i             |   27 +++++++++++++++++++++++++++
 torrc_templates/exit-v4.i            |   16 +++++++++++++++-
 torrc_templates/exit-v6.i            |   16 +++++++++++++++-
 torrc_templates/relay-non-exit.tmpl  |    8 +++++++-
 10 files changed, 114 insertions(+), 18 deletions(-)

diff --git a/torrc_templates/authority.tmpl b/torrc_templates/authority.tmpl
index eda123c..108e1cf 100644
--- a/torrc_templates/authority.tmpl
+++ b/torrc_templates/authority.tmpl
@@ -1,19 +1,40 @@
-${include:relay.tmpl}
+${include:relay-non-exit.tmpl}
+
 AuthoritativeDirectory 1
 V3AuthoritativeDirectory 1
 ContactInfo auth${nodenum}@test.test
 ExitPolicy reject *:*
-TestingV3AuthInitialVotingInterval 300
+
+# Speed up the consensus cycle as fast as it will go
+# Voting Interval can be:
+#   10, 12, 15, 18, 20, 24, 25, 30, 36, 40, 45, 50, 60, ...
+# Testing Initial Voting Interval can be:
+#    5,  6,  8,  9, or any of the possible values for Voting Interval,
+# as they both need to evenly divide 30 minutes.
+# If clock desynchronisation is an issue, use an interval of at least:
+#   18 * drift in seconds, to allow for a clock slop factor
+TestingV3AuthInitialVotingInterval 5
+V3AuthVotingInterval 10
+# VoteDelay + DistDelay must be less than VotingInterval
 TestingV3AuthInitialVoteDelay 2
+V3AuthVoteDelay 2
 TestingV3AuthInitialDistDelay 2
-TestingV3AuthVotingStartOffset 0
+V3AuthDistDelay 2
+# This is autoconfigured by chutney, so you probably don't want to use it
+#TestingV3AuthVotingStartOffset 0
 
 # Work around situations where the Exit and Guard flags aren't being set
 # These flags are set eventually, but it takes ~30 minutes
 # We could be more precise here, but it's easiest just to vote everything
-# Clients are sensible enough to filter out Exits without any exit ports, 
+# Clients are sensible enough to filter out Exits without any exit ports,
 # and Guards without ORPorts
 # If your tor doesn't recognise TestingDirAuthVoteExit, update your chutney
 # to a version that includes the issue-13161-check-torrc-options features
-TestingDirAuthVoteExit *
-TestingDirAuthVoteGuard *
+
+# These are all set in common.i in the Comprehensive/Rapid sections
+# Work around Exit requirements
+#TestingDirAuthVoteExit *
+# Work around bandwidth thresholds for exits
+#TestingMinExitFlagThreshold 0
+# Work around Guard uptime requirements
+#TestingDirAuthVoteGuard *
diff --git a/torrc_templates/bridge-v6.tmpl b/torrc_templates/bridge-v6.tmpl
index c9ba1e3..7e4ff91 100644
--- a/torrc_templates/bridge-v6.tmpl
+++ b/torrc_templates/bridge-v6.tmpl
@@ -1,3 +1,3 @@
 ${include:bridge.tmpl}
-OrPort ${ipv6_addr}:${orport} IPv6Only
 
+OrPort ${ipv6_addr}:${orport} IPv6Only
diff --git a/torrc_templates/bridge.tmpl b/torrc_templates/bridge.tmpl
index 0c1a622..34c7f14 100644
--- a/torrc_templates/bridge.tmpl
+++ b/torrc_templates/bridge.tmpl
@@ -1,7 +1,4 @@
-${include:common.i}
-SocksPort 0
-OrPort $orport
-Address $ip
+${include:relay-non-exit.tmpl}
+
 BridgeRelay 1
 ExitPolicy reject *:*
-
diff --git a/torrc_templates/bridgeauthority.tmpl b/torrc_templates/bridgeauthority.tmpl
index 5598069..04fd2b5 100644
--- a/torrc_templates/bridgeauthority.tmpl
+++ b/torrc_templates/bridgeauthority.tmpl
@@ -1,4 +1,4 @@
-${include:relay.tmpl}
+${include:relay-non-exit.tmpl}
 AuthoritativeDirectory 1
 ContactInfo bridgeauth${nodenum}@test.test
 ExitPolicy reject *:*
diff --git a/torrc_templates/bridgeclient.tmpl b/torrc_templates/bridgeclient.tmpl
index f414718..4c10c54 100644
--- a/torrc_templates/bridgeclient.tmpl
+++ b/torrc_templates/bridgeclient.tmpl
@@ -1,5 +1,16 @@
 ${include:client.tmpl}
+
 UseBridges 1
-UseMicrodescriptors 0 # Microdescriptors don't work well with bridge clients
+
+# In some tor versions, Microdescriptors don't work well with bridge clients
+# But the latest git sources appear to be fine
+#UseMicrodescriptors 0
+
 ${bridges}
 
+# Like TestingClientDownloadSchedule, but for bridge clients
+# Try to download after:
+# the minimum initial consensus time to start with,
+# a few eager fetches,
+# then half the minimum testing consensus interval
+TestingBridgeDownloadSchedule 0, 5
diff --git a/torrc_templates/client.tmpl b/torrc_templates/client.tmpl
index 1eb1d99..3aff6cb 100644
--- a/torrc_templates/client.tmpl
+++ b/torrc_templates/client.tmpl
@@ -1,6 +1,12 @@
 ${include:common.i}
 SocksPort $socksport
+
 #NOTE: Setting TestingClientConsensusDownloadSchedule doesn't
 #      help -- dl_stats.schedule is not DL_SCHED_CONSENSUS
 #      at boostrap time.
-TestingClientDownloadSchedule 10, 2, 2, 4, 4, 8, 13, 18, 25, 40, 60
+# Try to download after:
+# the minimum initial consensus time to start with,
+# a few eager fetches,
+# then half the minimum testing consensus interval
+TestingClientDownloadSchedule 0, 5
+TestingClientConsensusDownloadSchedule 0, 5
diff --git a/torrc_templates/common.i b/torrc_templates/common.i
index 42eebc4..16f2944 100644
--- a/torrc_templates/common.i
+++ b/torrc_templates/common.i
@@ -1,4 +1,29 @@
 TestingTorNetwork 1
+
+## Comprehensive Bootstrap Testing Options ##
+# These typically launch a working minimal Tor network in 25s-30s
+# See authority.tmpl for a partial explanation
+#AssumeReachable 0
+#Default PathsNeededToBuildCircuits 0.6
+#Disable TestingDirAuthVoteExit
+#Default V3AuthNIntervalsValid 3
+
+## Rapid Bootstrap Testing Options ##
+# These typically launch a working minimal Tor network in 6s-10s
+# These parameters make tor networks bootstrap fast,
+# but can cause consensus instability and network unreliability
+# (Some are also bad for security.)
+AssumeReachable 1
+PathsNeededToBuildCircuits 0.25
+TestingDirAuthVoteExit *
+V3AuthNIntervalsValid 2
+
+## Always On Testing Options ##
+# We enable TestingDirAuthVoteGuard to avoid Guard stability requirements
+TestingDirAuthVoteGuard *
+# We set TestingMinExitFlagThreshold to 0 to avoid Exit bandwidth requirements
+TestingMinExitFlagThreshold 0
+
 DataDirectory $dir
 RunAsDaemon 1
 ConnLimit $connlimit
@@ -7,6 +32,8 @@ ShutdownWaitLength 0
 PidFile ${dir}/pid
 Log notice file ${dir}/notice.log
 Log info file ${dir}/info.log
+# Turn this off to save space
+#Log debug file ${dir}/debug.log
 ProtocolWarnings 1
 SafeLogging 0
 DisableDebuggerAttachment 0
diff --git a/torrc_templates/exit-v4.i b/torrc_templates/exit-v4.i
index eca35e0..375164b 100644
--- a/torrc_templates/exit-v4.i
+++ b/torrc_templates/exit-v4.i
@@ -1,3 +1,17 @@
 
 # An exit policy that allows exiting to IPv4 localhost
-ExitPolicy accept 127.0.0.0/8:*
+#ExitPolicy accept 127.0.0.0/8:*
+
+# An exit policy that allows exiting to the entire internet on HTTP(S)
+# This may be required to work around #11264 with microdescriptors enabled
+# "The core of this issue appears to be that the Exit flag code is
+#  optimistic (just needs a /8 and 2 ports), but the microdescriptor
+#  exit policy summary code is pessimistic (needs the entire internet)."
+# An alternative is to disable microdescriptors and use regular
+# descriptors, as they do not suffer from this issue.
+#ExitPolicy accept *:80
+#ExitPolicy accept *:443
+
+#ExitPolicy reject *:*
+# OR
+ExitPolicy accept *:*
diff --git a/torrc_templates/exit-v6.i b/torrc_templates/exit-v6.i
index 74232a5..5200f3e 100644
--- a/torrc_templates/exit-v6.i
+++ b/torrc_templates/exit-v6.i
@@ -1,4 +1,18 @@
 
 # An exit policy that allows exiting to IPv6 localhost
-ExitPolicy accept [::1]:*
+#ExitPolicy accept6 [::1]:*
 IPv6Exit 1
+
+# An exit policy that allows exiting to the entire internet on HTTP(S)
+# This may be required to work around #11264 with microdescriptors enabled
+# "The core of this issue appears to be that the Exit flag code is
+#  optimistic (just needs a /8 [IP6?]  and 2 ports), but the microdescriptor
+#  exit policy summary code is pessimistic (needs the entire internet)."
+# An alternative is to disable microdescriptors and use regular
+# descriptors, as they do not suffer from this issue.
+#ExitPolicy accept6 *:80
+#ExitPolicy accept6 *:443
+
+#ExitPolicy reject6 *:*
+# OR
+ExitPolicy accept6 *:*
diff --git a/torrc_templates/relay-non-exit.tmpl b/torrc_templates/relay-non-exit.tmpl
index 2f4b7f1..bf870a6 100644
--- a/torrc_templates/relay-non-exit.tmpl
+++ b/torrc_templates/relay-non-exit.tmpl
@@ -3,7 +3,13 @@ SocksPort 0
 OrPort $orport
 Address $ip
 DirPort $dirport
+
 #NOTE: Setting TestingServerConsensusDownloadSchedule doesn't
 #      help -- dl_stats.schedule is not DL_SCHED_CONSENSUS
 #      at boostrap time.
-TestingServerDownloadSchedule 10, 2, 2, 4, 4, 8, 13, 18, 25, 40, 60
+# Try to download after:
+# the minimum initial consensus time to start with,
+# a few eager fetches,
+# then half the minimum testing consensus interval
+TestingServerDownloadSchedule 0, 5
+TestingServerConsensusDownloadSchedule 0, 5





More information about the tor-commits mailing list