[tor-bugs] #23101 [Core Tor/Tor]: Predict and build specific HS purpose circuits (rather than GENERAL)

Tor Bug Tracker & Wiki blackhole at torproject.org
Sat Nov 11 02:51:26 UTC 2017


#23101: Predict and build specific HS purpose circuits (rather than GENERAL)
-------------------------------------------------+-------------------------
 Reporter:  mikeperry                            |          Owner:  (none)
     Type:  enhancement                          |         Status:  new
 Priority:  Medium                               |      Milestone:  Tor:
                                                 |  0.3.3.x-final
Component:  Core Tor/Tor                         |        Version:
 Severity:  Normal                               |     Resolution:
 Keywords:  tor-hs, tor-guard, guard-discovery-  |  Actual Points:
  prop247-controller                             |
Parent ID:  #13837                               |         Points:
 Reviewer:                                       |        Sponsor:
-------------------------------------------------+-------------------------

Comment (by mikeperry):

 Asn - you are right to worry about trying to alter how we deal with
 existing purposes, especially in a way that changes the HS state machine.
 However, adding a whole new circuit purpose is quite easy. I have done it
 several times before. I know how to do it without issue. Aside from a
 couple asserts and checks here and there, new purposes get ignored by
 existing code. That's what circuit purposes are for.

 How about this: instead of messing with the existing HS purpose state
 machine(s), we create a new purpose (say CIRCUIT_PURPOSE_HS_GENERAL), and
 then in circuit_predict_and_launch_new() we launch new circuits of that
 type when we predict we need any hidden service circuits. Then we should
 be able to make just a few changes to circuit_get_open_circ_or_launch(),
 circuit_launch_by_extend_info(), and circuit_find_to_cannibalize() to use
 this new circuit type for hidden service circuits (instead of using
 CIRCUIT_PURPOSE_C_GENERAL for them).

 That way circuits with this new purpose will otherwise be ignored unless
 we are looking to build a new one. And that mechanism for reusing them
 will be very similar as it is today, just drawing from
 CIRCUIT_PURPOSE_HS_GENERAL instead of CIRCUIT_PURPOSE_C_GENERAL, and we
 also don't have to change our current rephist prediction code.

 Sound like a plan?

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


More information about the tor-bugs mailing list