no circuit loops?

Andrei Serjantov aas23 at
Fri Oct 24 09:55:25 UTC 2003

> But actually, the path choosing code is old and rickety. It still chooses
> the whole path at the beginning, even though the path is actually built
> incrementally. So if any hop fails to build it just gives up.
> It's tricky because we have constraints, such as who can be our exit
> node, that mean we need to think ahead a little bit, so we don't e.g.
> choose the only valid exit node as our second-to-last hop and then look
> around for an exit node.

Surely, you choose from the "other end", right? Assuming the topology is
not restricted, choose the exit node, then choose all the others uniformly
without replacement.

> > On the other hand, the absence of loops gives information about a
> > circuit. E.g., there is an observer on OR_1's network connections.
> > Alice connects through OR_1, OR_2, OR_3, OR_4, OR_5.  OR_4 is bad.
> Remember that for performance and usability our path length is actually
> just OR_1, OR_2 by default. So the whole loop question is a bit moot. :)

Yes, but you need to be able to choose paths sensibly if the user alters
the default and the "shortcutting loops" problem is a real one. i.e. you
do not want under any circumstances your first and last router to be the


Andrei Serjantov
Queens' College
Cambridge CB3 9ET

More information about the tor-dev mailing list