[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[or-cvs] r15010: start a spec proposal to describe this whole bootstrapping p (tor/trunk/doc/spec/proposals/ideas)
Author: arma
Date: 2008-06-07 05:27:43 -0400 (Sat, 07 Jun 2008)
New Revision: 15010
Added:
tor/trunk/doc/spec/proposals/ideas/xxx-bootstrap-phases.txt
Log:
start a spec proposal to describe this whole bootstrapping phase thing
Added: tor/trunk/doc/spec/proposals/ideas/xxx-bootstrap-phases.txt
===================================================================
--- tor/trunk/doc/spec/proposals/ideas/xxx-bootstrap-phases.txt (rev 0)
+++ tor/trunk/doc/spec/proposals/ideas/xxx-bootstrap-phases.txt 2008-06-07 09:27:43 UTC (rev 15010)
@@ -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
+