mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 13:13:44 +01:00
start a spec proposal to describe this whole bootstrapping phase thing
svn:r15010
This commit is contained in:
parent
00fcd66218
commit
58c2a5379b
106
doc/spec/proposals/ideas/xxx-bootstrap-phases.txt
Normal file
106
doc/spec/proposals/ideas/xxx-bootstrap-phases.txt
Normal file
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user