aboutsummaryrefslogtreecommitdiff
path: root/doc/spec/proposals/ideas
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2008-06-07 09:27:43 +0000
committerRoger Dingledine <arma@torproject.org>2008-06-07 09:27:43 +0000
commit58c2a5379b5bc89e4bde9b07b2cb690715c1ec22 (patch)
tree3ab7a17048a5a3af21a19838c59acf17965b7bb1 /doc/spec/proposals/ideas
parent00fcd66218282d8bf655820c0609a67d96500d3a (diff)
downloadtor-58c2a5379b5bc89e4bde9b07b2cb690715c1ec22.tar
tor-58c2a5379b5bc89e4bde9b07b2cb690715c1ec22.tar.gz
start a spec proposal to describe this whole bootstrapping phase thing
svn:r15010
Diffstat (limited to 'doc/spec/proposals/ideas')
-rw-r--r--doc/spec/proposals/ideas/xxx-bootstrap-phases.txt106
1 files changed, 106 insertions, 0 deletions
diff --git a/doc/spec/proposals/ideas/xxx-bootstrap-phases.txt b/doc/spec/proposals/ideas/xxx-bootstrap-phases.txt
new file mode 100644
index 000000000..e7d67d8ad
--- /dev/null
+++ b/doc/spec/proposals/ideas/xxx-bootstrap-phases.txt
@@ -0,0 +1,106 @@
+Filename: xxx-bootstrap-phases.txt
+Title: Keep controllers informed as Tor bootstraps
+Version: $Revision$
+Last-Modified: $Date$
+Author: Roger Dingledine
+Created: 07-Jun-2008
+Status: Open
+
+1. Overview.
+
+ Tor has many steps to bootstrapping directory information and
+ initial circuits, but from the controller's perspective we just have
+ a coarse-grained "CIRCUIT_ESTABLISHED" status event. Tor users with
+ slow connections or with connectivity problems can wait a long time
+ staring at the yellow onion, wondering if it will ever change color.
+
+ This proposal describes a new client status event so Tor can give
+ more details to the controller. Section 2 describes the changes to the
+ controller protocol; Section 3 describes Tor's internal bootstrapping
+ phases assuming everything goes correctly; and Section 4 describes
+ how and when Tor chooses to issue bootstrap warnings.
+
+2. Controller event syntax.
+
+ The generic status event is:
+
+ "650" SP StatusType SP StatusSeverity SP StatusAction
+ [SP StatusArguments] CRLF
+
+ So in this case we send
+ 650 STATUS_CLIENT NOTICE/WARN BOOTSTRAP \
+ PROGRESS=num TAG=string SUMMARY=string
+
+ "Progress" gives a number between 0 and 100 for how far through
+ the bootstrapping process we are. "Summary" is a string that can be
+ displayed to the user to describe the *next* task that Tor will tackle,
+ i.e., the task it is working on after sending the status event. "Tag"
+ is an optional string that controllers can use to recognize bootstrap
+ phases from Section 3, if they want to do something smarter than just
+ blindly displaying the summary string.
+
+ The severity describes whether this is a normal bootstrap phase
+ (severity notice) or an indication of a bootstrapping problem
+ (severity warn).
+
+3. The bootstrap phases.
+
+ Phase 0: tag=STARTING
+
+ Phase 5: tag=CONN_DIR
+
+ Phase 10: tag=HANDSHAKE_DIR
+
+ Phase 15: tag=ONEHOP_CREATE
+
+ Phase 20: tag=REQUESTING_STATUS
+
+ Phase 25: tag=LOADING_STATUS
+
+ Phase 40: tag=LOADING_KEYS
+
+ Phase 45: tag=REQUESTING_DESCRIPTORS
+
+ Phase 50: tag=LOADING_DESCRIPTORS
+
+ Phase 80: tag=CONN_OR
+
+ Phase 85: tag=HANDSHAKE_OR
+
+ Phase 90: tag=CIRCUIT_CREATE
+
+ Phase 100: tag=DONE
+
+
+ 5: fetching authority key certs
+ LOADING_KEYS
+ (authority_certs_fetch_missing)
+10: Connecting to directory mirror
+ CONN_DIR
+ (circuit_handle_first_hop)
+15: Finishing handshake with directory mirror
+ HANDSHAKE_DIR
+ (connection_or_finished_connecting)
+20: Establishing one-hop circuit for dir info
+ ONEHOP_CREATE
+ (circuit_send_next_onion_skin)
+25: Asking for networkstatus consensus
+ REQUESTING_STATUS
+ (circuit_send_next_onion_skin)
+30: Fetching networkstatus consensus
+ LOADING_STATUS
+ (update_consensus_networkstatus_downloads)
+50: Fetching relay descriptors
+ LOADING_DESCRIPTORS
+ (update_router_have_minimum_dir_info)
+80: Connecting to entry guard
+ CONN_OR
+ (update_router_have_minimum_dir_info)
+85: Finishing handshake with entry guard
+ HANDSHAKE_OR
+ (connection_or_finished_connecting)
+90: Establishing circuit
+ CIRCUIT_CREATE
+ (circuit_send_next_onion_skin)
+100: Done
+