proposal 141: download server descriptors on demand

Roger Dingledine arma at
Tue Jul 15 23:35:28 UTC 2008

On Fri, Jul 11, 2008 at 08:22:55PM +0200, Peter Palfrader wrote:
> > >    b) how to represent weights in the consensus?
> > >       Maybe "s Guard=0.13 Exit=0.02 Middle=0.00 Stable.."
> > 
> > That would break backward compatibility.  Adding a new per-line
> > instead would probably be better.  We should play with representations
> > here till we wind up with something compressible, and we should figure
> > out the space impact of doing this.
> How about something like "w Exit=41 Guard=94 Middle=543"

If we specify weights in the consensus, then one new or changed relay will
cause us to recompute most of the weights. These constant minor changes
would pretty much kill proposal 140 ("Provide diffs between consensuses").

Whereas writing the bandwidth number (perhaps rounded) in the consensus
would mean that the number only changes when the descriptor changes. (It
also simplifies constructing the consensus, since there should only be
one number associated with a given descriptor.)

Another advantage is that if clients learn about relays through some
other way, and they want to weight those relays into the decision, they
will know how to do it. If the weights are all computed in the consensus,
it will be tough to balance over new relays.

Now, the downside of just putting the naked bandwidth number is that we
can't change how we compute weights on the directory authorities (e.g.
if we want to raise DEFAULT_MAX_BELIEVABLE_BANDWIDTH) and have all the
clients magically move to the new algorithm.

Did I miss any pros / cons?

> Theory: Most routers use one of a very small set of different exit policies (if
> we think of a router's own IP address in its exit policy as a single token
> @@IP@@ or whatever).
> Maybe the consensus document should include a hash of the (normalized,
> i.e. the router's IP replaced with a token) exit policy.

I like this theory. It's already the case that Vidalia gives you a set
of 6 checkboxes for your exit policy, so the set of exit policies that
ordinary users pick is already constrained.

There do seem to be a lot of edge cases that need more analysis though.


More information about the tor-dev mailing list