[tor-bugs] #7157 [Tor]: "Low circuit success rate %u/%u for guard %s=%s."

Tor Bug Tracker & Wiki blackhole at torproject.org
Tue Dec 18 22:09:39 UTC 2012


#7157: "Low circuit success rate %u/%u for guard %s=%s."
-----------------------------------------+----------------------------------
 Reporter:  arma                         |          Owner:                    
     Type:  enhancement                  |         Status:  needs_revision    
 Priority:  normal                       |      Milestone:  Tor: 0.2.4.x-final
Component:  Tor                          |        Version:                    
 Keywords:  tor-client, MikePerry201212  |         Parent:  #5456             
   Points:                               |   Actualpoints:  19                
-----------------------------------------+----------------------------------

Comment(by nickm):

 Replying to [comment:22 mikeperry]:
 > Replying to [comment:18 nickm]:
 > > Okay, part two (which covers the rest of the branch up to
 ccaeef22e168af34e9b6a63d65ce17e58dd702e2) is much shorter:
 > >
 > > Setting timestamp_dirty in circuit_extend_to_new_exit seems wrong.
 > > The circuit *isn't* dirty!  Maybe overloading timestamp_dirty in this
 > > way, rather than grabbing a new bit, is a mistake?
 >
 > Hrmm. Both codepaths that cause circuit_extend_to_new_exit to fire seem
 to indicate it's dirty to me: We're either re-extending an intro circ, or
 cannibalizing an existing circuit to send it to a specific new exit. In
 neither of these cases do we really want to re-use this circuit for some
 random new traffic, right?

 That's an abstraction abuse.  Just because in every case where we
 currently cannibalize a circuit, we want to mark it dirty, that doesn't
 mean that cannibalizing a circuit should mark it dirty, right?

 > You'll note that I also added a dirty timestamp in
 rend_service_rendezvous_has_opened() for similar reasons..

 But that one really is a dirtying thing: it means that the circuit has
 been used.

 > However, if this bit causes the code that did the re-extending/opening
 to suddenly decide "Eww, a dirty circuit. Better make a fresh one!" once
 the extend completes, that could be bad. It didn't *seem* to do this, but
 some of those cannibalization corner cases are certainly screwy...
 >
 > > 04866055e8dadc9eb5b09773 freaks me out.  This feels like a significant
 > > redesign of the whole concept, and I didn't see it mentioned on
 > > tor-dev anywhere or on the tickets.  "As long as end-to-end tagging is
 > > possible, we assume the adversary will use it over hop-to-hop
 > > failure"?  Is there any discussion of this anyplace?  (The idea here
 > > seems to be that entry nodes are allowed to filter for the second hop
 > > as much as they like, and the pathbias code won't care, but that if
 > > they start tagging/filtering for the third hop or later, they need to
 > > be called out. Is that right?)
 >
 > Yes, this is the idea, but there has been no discussion yet. I added it
 after watching the end-to-end circuit success rate repeatedly fluctuate
 between 90% and 50%, due almost entirely to per-hop onionskin failure (CPU
 overload).
  [...]

 What you say is plausible, but it really needs to go on tor-dev or in the
 proposal or somewhere so we have a record of our design and rationale.  We
 need to get better at making sure that development discussion of this kind
 goes on in tor-dev, or at least gets copied there once there's a
 consensus.

-- 
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/7157#comment:24>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tor-bugs mailing list