[or-cvs] r15844: Add weight consensus line, as described on or-dev, list elem (tor/trunk/doc/spec/proposals)
weasel at seul.org
weasel at seul.org
Fri Jul 11 19:01:48 UTC 2008
Author: weasel
Date: 2008-07-11 15:01:48 -0400 (Fri, 11 Jul 2008)
New Revision: 15844
Modified:
tor/trunk/doc/spec/proposals/141-jit-sd-downloads.txt
Log:
Add weight consensus line, as described on or-dev,
list elements of RELAY_REQUEST_SD cells
Modified: tor/trunk/doc/spec/proposals/141-jit-sd-downloads.txt
===================================================================
--- tor/trunk/doc/spec/proposals/141-jit-sd-downloads.txt 2008-07-11 17:08:11 UTC (rev 15843)
+++ tor/trunk/doc/spec/proposals/141-jit-sd-downloads.txt 2008-07-11 19:01:48 UTC (rev 15844)
@@ -107,7 +107,7 @@
from that key is valid.
-3. Doing away with the need for all SDs
+3. No longer require clients to have copies of all SDs
3.1 Load balancing info in consensus documents
@@ -116,12 +116,33 @@
clients to not require all server descriptors this information will
have to move into the network status document.
- [XXX Two open questions here:
- a) how do we arrive at a consensus weight?
- b) how to represent weights in the consensus?
- Maybe "s Guard=0.13 Exit=0.02 Middle=0.00 Stable.."
- ]
+ Consensus documents will have a new line per router similar
+ to the "r", "s", and "v" lines that already exist. This line
+ will convey weight information to clients.
+ "w Exit=41 Guard=94 Middle=543 ..."
+
+ It starts with the letter w and then contains any number of Key=Value
+ pairs. Values will be non-negative integers. Clients will pick
+ routers with a propability proportional to the number for the intended
+ purpose.
+
+ Clients MUST accept sums of all weights for a given purpose over all
+ routers in a consensus up to UINT64_max.
+
+ [XXX how do we arrive at a consensus weight?
+ option a) Perhaps the vote could contain the node's bandwidth, and
+ this could be used to calculate the weights? It's
+ necessary that the consensus remain a deterministic
+ function of the votes.
+ option b) Every voter assigns weights for each of the purposes
+ (Exit, Guard, ..) so that their total sum is some constant
+ X. When building a consensus we take the median for each
+ purpose for each router.
+
+ Option a has the disadvantage that if we want to tweak the weighting
+ we have to make a new consensus-method]
+
3.2 Fetching descriptors on demand
As described in 2.4 a descriptor lists IP address, OR- and Dir-Port,
@@ -143,11 +164,7 @@
has a hash for the descriptor of this server. We want exactly
that descriptor, not a different one.)
- [XXX: How? We could either come up with a new cell type,
- RELAY_REQUEST_SD that takes only a hash (of the SD), or use
- RELAY_BEGIN_DIR. The former is probably smarter since we will
- want to use it later on as well, and there we will require
- padding.]
+ It does that by sending a RELAY_REQUEST_SD cell.
A client MAY cache the descriptor of the guard node so that it does
not need to request it every single time it contacts the guard.
@@ -168,7 +185,16 @@
constant upper limit in order to conceal a client's destination
from anybody who might be counting cells/bytes.
- [XXX: detailed spec of RELAY_REQUEST_SD cell and its reply]
+ RELAY_REQUEST_SD cells contain the following information:
+ - hash of the server descriptor requested
+ - hash of the identity digest of the server for which we want the SD
+ - IP address and OR-port or the server for which we want the SD
+ - padding factor - the number of cells we want the answer
+ padded to.
+ [XXX this just occured to me and it might be smart. or it might
+ be stupid. clients would learn the padding factor they want
+ to use from the consensus document. This allows us to grow
+ the replies later on should SDs become larger.]
[XXX: figure out a decent padding size]
3.3 Protocol versions
@@ -210,10 +236,7 @@
RELAY_REQUEST_SD cell that asks for C's server descriptor (by SD digest).
In order to answer that request B obviously needs a copy of C's server
- descriptor. In the future we might amend RELAY_REQUEST_SD cells to
- contain also the expected IP address and OR-port of the server C (the
- client learns them from the network status document), so that B no
- longer needs to know all the descriptors of the entire network but
- instead can simply go and ask C for its descriptor before passing it
+ descriptor. The RELAY_REQUEST_SD cell already has all the info that
+ B needs to contact C so it can ask about the descriptor before passing it
back to the client.
More information about the tor-commits
mailing list