[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [tor-dev] Dirauth setting for PathsNeededToBuildCircuits



> On 9 Sep 2016, at 09:35, Jesse V <kernelcorn@xxxxxxxxxx> wrote:
> 
> 
> Tor clients can only build circuits once they know enough about the
> network. This "know enough" threshold is determined by the
> PathsNeededToBuildCircuits setting. From reading Tor's manual, it seems
> that a setting of X tells Tor clients to wait until they have enough
> descriptors/microdescriptors such that they have X percentage of
> consensus weight. By default PathsNeededToBuildCircuits is determined by
> the directory authorities.

No, that's not quite right:
Tor waits until it has that fraction of *paths*, not that fraction of [micro]descriptors.

So, in an ordinary Tor network, when a client has descriptors containing half the total consensus weight, this is:
0.5 guards * 0.5 middles * 0.5 exits = 0.125 of paths

See compute_frac_paths_available:
https://gitweb.torproject.org/tor.git/tree/src/or/nodelist.c#n1799

There's a slightly different calculation used in recent Tor versions with small networks with no Exits, which are typically hidden-service only test networks.
The example above would be:
0.5 guards * 0.5 middles * no exits in consensus (1.0) = 0.25 of paths

See:
https://gitweb.torproject.org/tor.git/tree/src/or/nodelist.c#n1794

> I'm curious, how is PathsNeededToBuildCircuits set? I don't see that
> value in the microdescriptor documents, it doesn't seem to be documented
> in tor-spec, and I don't see much about it online, but maybe I missed
> something. What is the typical value?

min_paths_for_circs_pct is not set in the consensus:
https://consensus-health.torproject.org/consensus-health.html

So the default is used:
#define DFLT_PCT_USABLE_NEEDED 60
Unless the client specifies a value for PathsNeededToBuildCircuits.

See get_frac_paths_needed_for_circs for details:
https://gitweb.torproject.org/tor.git/tree/src/or/nodelist.c#n1846

Thanks for reporting this, I've updated the PathsNeededToBuildCircuits tor manual page entry:
https://trac.torproject.org/projects/tor/ticket/20117

> I see that 0.95 is the cutoff, but
> how high will prevent a client from bootstrapping?

It really depends on how many descriptors the client can retrieve, which depends on how many directory servers it can access, and how many descriptors they have retrieved. Almost all directory mirrors should have 100% of the descriptors in recent consensuses. So it really depends on how well the client can retrieve them - on its network connectivity and speed.

0.95 is fine in the current network with a decent client connection:
tor DataDirectory `mktemp -d` PathsNeededToBuildCircuits 0.95

So I disabled the PathsNeededToBuildCircuits maximum and rebuilt master:

src/or/tor DataDirectory `mktemp -d` PathsNeededToBuildCircuits 1.0
At this level, Tor failed to bootstrap once, but seems to succeed most times.
But it takes about twice as long to load relay descriptors (10s vs 20s).

Tim

> 
> --
> Jesse V
> 
> _______________________________________________
> tor-dev mailing list
> tor-dev@xxxxxxxxxxxxxxxxxxxx
> https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-dev

Tim Wilson-Brown (teor)

teor2345 at gmail dot com
PGP C855 6CED 5D90 A0C5 29F6 4D43 450C BA7F 968F 094B
ricochet:ekmygaiu4rzgsk6n
xmpp: teor at torproject dot org






Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

_______________________________________________
tor-dev mailing list
tor-dev@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-dev