diff options
author | Nick Mathewson <nickm@torproject.org> | 2008-11-09 16:41:06 +0000 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2008-11-09 16:41:06 +0000 |
commit | dcfbd1e024d732ff11d62751a44692f0b3c105d1 (patch) | |
tree | 5d41053f7a6f315368e127c6e6499c7873394d20 /doc/spec | |
parent | 1d824f8dc29214b60d7835eb9ed9186944828790 (diff) | |
download | tor-dcfbd1e024d732ff11d62751a44692f0b3c105d1.tar tor-dcfbd1e024d732ff11d62751a44692f0b3c105d1.tar.gz |
Add some notes on Unnamed, w lines, and p lines to dir-spec.txt, since they are all in the code now.
svn:r17227
Diffstat (limited to 'doc/spec')
-rw-r--r-- | doc/spec/dir-spec.txt | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/doc/spec/dir-spec.txt b/doc/spec/dir-spec.txt index c20f44c18..0c2eb7525 100644 --- a/doc/spec/dir-spec.txt +++ b/doc/spec/dir-spec.txt @@ -977,6 +977,8 @@ $Id$ and this authority binds names. "Stable" if the router is suitable for long-lived circuits. "Running" if the router is currently usable. + "Unnamed" if another router has bound the name used by this + router, and this authority binds names. "Valid" if the router has been 'validated'. "V2Dir" if the router implements the v2 directory protocol. "V3Dir" if the router implements this protocol. @@ -997,6 +999,27 @@ $Id$ descriptors if they would cause "v" lines to be over 128 characters long. + "w" SP "Bandwidth=" INT NL + + [At most once.] + + An estimate of the bandwidth of this server, in an arbitrary + unit (currently kilobytes per second). Used to weight router + selection. Other weighting keywords may be added later. + Clients MUST ignore keywords they do not recognize. + + "p" SP ("accept" / "reject") SP PortList NL + + [At most once.] + + PortList = PortOrRange + PortList = PortList "," PortOrRange + PortOrRange = INT "-" INT / INT + + A list of those ports that this router supports (if 'accept') + or does not support (if 'reject') for exit to "most + addresses". + The signature section contains the following item, which appears Exactly Once for a vote, and At Least Once for a consensus. @@ -1119,6 +1142,19 @@ $Id$ Thus, the network-status vote includes all non-blacklisted, non-expired, non-superseded descriptors. + The bandwidth in a "w" line should be taken as the best estimate + of the router's actual capacity that the authority has. For now, + this should be the lesser of the observed bandwidth and bandwidth + rate limit from the router descriptor. It is given in kilobytes + per second, and capped at some arbitrary value (curently 10 MB/s). + + The ports listed in a "p" line should be taken as those ports for + which the router's exit policy permits 'most' addresses, ignoring any + accept not for all addresses, ignoring all rejects for private + netblocks. "Most" addresses are permitted if no more than 2^25 + IPv4 addresses (two /8 networks) were blocked. The list is encoded + as described in 3.4.2. + 3.4. Computing a consensus from a set of votes Given a set of votes, authorities compute the contents of the consensus @@ -1178,6 +1214,17 @@ $Id$ * If consensus-method 4 or later is in use, then routers that do not have the Running flag are not listed at all. + * If consensus-method 5 or later is in use, then the "w" line + is generated using a low-median of the bandwidth values from + the votes that included "w" lines for this router. + + * If consensus-method 5 or later is in use, then the "p" line + is taken from the votes that have the same policy summary + for the descriptor we are listing. (They should all be the + same. If they are not, we pick the most commonly listed + one, breaking ties in favor of the lexigraphically larger + vote.) The port list is encoded as specified in 3.4.2. + The signatures at the end of a consensus document are sorted in ascending order by identity digest. @@ -1197,6 +1244,7 @@ $Id$ "2" -- Added support for the Unnamed flag. "3" -- Added legacy ID key support to aid in authority ID key rollovers "4" -- No longer list routers that are not running in the consensus + "5" -- adds support for "w" and "p" lines. Before generating a consensus, an authority must decide which consensus method to use. To do this, it looks for the highest version number @@ -1209,6 +1257,26 @@ $Id$ making changes in the contents of consensus; not for making backward-incompatible changes in their format.) +3.4.2. Encoding port lists + + Whether the summary shows the list of accepted ports or the list of + rejected ports depends on which list is shorter (has a shorter string + representation). In case of ties we choose the list of accepted + ports. As an exception to this rule an allow-all policy is + represented as "accept 1-65535" instead of "reject " and a reject-all + policy is similarly given as "reject 1-65535". + + Summary items are compressed, that is instead of "80-88,89-100" there + only is a single item of "80-100", similarly instead of "20,21" a + summary will say "20-21". + + Port lists are sorted in ascending order. + + The maximum allowed length of a policy summary (including the "accept " + or "reject ") is 1000 characters. If a summary exceeds that length we + use an accept-style summary and list as much of the port list as is + possible within these 1000 bytes. [XXXX be more specific.] + 3.5. Detached signatures Assuming full connectivity, every authority should compute and sign the |