diff options
author | Roger Dingledine <arma@torproject.org> | 2003-06-12 07:13:01 +0000 |
---|---|---|
committer | Roger Dingledine <arma@torproject.org> | 2003-06-12 07:13:01 +0000 |
commit | 7137a57849f31d922569331a63e6507288032642 (patch) | |
tree | d5d9ec19937d097ff8bcd38f2eecb1b819ef6ba1 | |
parent | 3d538f6d702937c23bec33b3bdd62ff9fba9d2a3 (diff) | |
download | tor-7137a57849f31d922569331a63e6507288032642.tar tor-7137a57849f31d922569331a63e6507288032642.tar.gz |
further spec cleanup
svn:r311
-rw-r--r-- | doc/tor-spec.txt | 53 |
1 files changed, 28 insertions, 25 deletions
diff --git a/doc/tor-spec.txt b/doc/tor-spec.txt index 48ef92e3d..26836823f 100644 --- a/doc/tor-spec.txt +++ b/doc/tor-spec.txt @@ -100,7 +100,7 @@ which reveals the downstream node. For later use, the server sets its keys for this connection, setting K_f to the client's K_b, and K_b to the client's K_f. - The server then creates a server authentication message[M2] as + The server then creates a server authentication message [M2] as follows: Modified client authentication [48 bytes] A random nonce [N] [8 bytes] @@ -353,7 +353,7 @@ which reveals the downstream node. When an onion router receives a CREATE cell, if it already has a circuit on the given connection with the given ACI, it drops the - cell. Otherwise, some time after receiving the CREATE cell, completes + cell. Otherwise, sometime after receiving the CREATE cell, it completes the DH handshake, and replies with a CREATED cell, containing g^y as its [128 byte] payload. Upon receiving a CREATED cell, an onion router packs it payload into an EXTENDED relay cell (see section 5), @@ -371,14 +371,15 @@ which reveals the downstream node. circuit's intended lifetime is over. Circuits may be torn down either completely or hop-by-hop. - To tear down a circuit completely, an OR or OP sends a DESTROY cell - with that direction's ACI to an adjacent nodes on that circuit. + To tear down a circuit completely, an OR or OP sends a DESTROY + cell to the adjacent nodes on that circuit, using the appropriate + direction's ACI. - Upon receiving a DESTROY cell, an OR frees resources associated - with the corresponding circuit. If it's not the start or end of the - circuit, it sends a DESTROY cell for that circuit to the next OR in - the circuit. If the node is the start or end of the circuit, then - it tears down any associated edge connections (see section 5.1). + Upon receiving an outgoing DESTROY cell, an OR frees resources + associated with the corresponding circuit. If it's not the end of + the circuit, it sends a DESTROY cell for that circuit to the next OR + in the circuit. If the node is the end of the circuit, then it tears + down any associated edge connections (see section 5.1). After a DESTROY cell has been processed, an OR ignores all data or destroy cells for the corresponding circuit. @@ -394,6 +395,9 @@ which reveals the downstream node. RELAY_TRUNCATED cell towards the OP; the node farther from the OP should send a DESTROY cell down the circuit. + [We'll have to reevaluate this section once we figure out cleaner + circuit/connection killing conventions. -RD] + 4.5. Routing data cells When an OR receives a RELAY cell, it checks the cell's ACI and @@ -454,8 +458,8 @@ which reveals the downstream node. 5 -- RELAY_SENDME 6 -- RELAY_EXTEND 7 -- RELAY_EXTENDED - 8 -- RELAY_TRUNCATE - 9 -- RELAY_TRUNCATED + 8 -- RELAY_TRUNCATE + 9 -- RELAY_TRUNCATED All RELAY cells pertaining to the same tunneled stream have the same stream ID. Stream ID's are chosen randomly by the OP. A @@ -517,39 +521,38 @@ which reveals the downstream node. for running a node, we plan to leave out link padding until this tradeoff is better understood. -6.3. Circuit flow control +6.3. Circuit-level flow control To control a circuit's bandwidth usage, each OR keeps track of two 'windows', consisting of how many RELAY_DATA cells it is allowed to package for transmission, and how many RELAY_DATA cells it is willing to deliver to streams outside the network. - Each 'window' value is initially set to 500 data cells + Each 'window' value is initially set to 1000 data cells in each direction (cells that are not data cells do not affect - the window). When an OR wants to deliver more cells, it sends a + the window). When an OR is willing to deliver more cells, it sends a RELAY_SENDME cell towards the OP, with Stream ID zero. When an OR receives a RELAY_SENDME cell with stream ID zero, it increments its packaging window. Either of these cells increment the corresponding window by 100. - The OP behaves identically, except that it must track a packaging and - delivery windows for every OR in the circuit. + The OP behaves identically, except that it must track a packaging + window and a delivery window for every OR in the circuit. An OR or OP sends cells to increment its delivery window when the - corresponding window value falls under some threshold (400), and - the node is ready to process more cells on that circuit. + corresponding window value falls under some threshold (900). If a packaging window reaches 0, the OR or OP stops reading from TCP connections for all streams on the corresponding circuit, and - sends no more RELAY_DATA cells until receiving a RElAY_SENDME cell. + sends no more RELAY_DATA cells until receiving a RELAY_SENDME cell. -6.4. Topic flow control +6.4. Stream-level flow control - Edge nodes use RELAY_SENDME data cells to implement end-to-end flow - control for individual connections across circuits. As with circuit - flow control, edge nodes begin with a window of cells (500) per - topic, and increment the window by a fixed value (50) upon receiving - a RELAY_SENDME data cell. Edge nodes initiate TOPIC_SENDME data + Edge nodes use RELAY_SENDME cells to implement end-to-end flow + control for individual connections across circuits. Similarly to + circuit-level flow control, edge nodes begin with a window of cells + (500) per stream, and increment the window by a fixed value (50) + upon receiving a RELAY_SENDME cell. Edge nodes initiate RELAY_SENDME cells when both a) the window is <= 450, and b) there are less than ten cell payloads remaining to be flushed at that edge. |