Opened 6 years ago

Last modified 2 years ago

#9241 new enhancement

Abstract and decouple path selection from circuit construction

Reported by: mikeperry Owned by:
Priority: Medium Milestone: Tor: unspecified
Component: Core Tor/Tor Version: Tor: 0.2.7
Severity: Normal Keywords: tor-client, path-selection mike-can, tor-route-testing refactor technical-debt
Cc: Actual Points:
Parent ID: #9001 Points: 6
Reviewer: Sponsor: SponsorU-can

Description

For #9001, we first need to abstract the existing path selection mechanisms and make sure they are tested and equivalent.

Child Tickets

Change History (28)

comment:1 Changed 6 years ago by mikeperry

Parent ID: #9001

comment:2 Changed 6 years ago by nickm

Also, this isn't just about #9001: decoupling and abstracting the path selection code would:

  • let researchers prototype new path selection algorithms more easily
  • make the path selection code more testable*, and make changes to that code testabe
  • make the path selection code easier to review
  • probably, make the path selection code less buggy

Does anybody want to take a stab at figuring out what the API should look like here? I can try to outline it in a week or two, if not.

* Having 'testable' code helps, but since we need to make our refactoring itself tested, making the code testable is more of a long-term advantage than a short-term one. (That is, in order to refactor to become easier to test, we must first write tests.)

comment:3 Changed 6 years ago by nickm

Merging #8949 or something like it would help write good initial tests here.

comment:4 Changed 6 years ago by nickm

Milestone: Tor: 0.2.5.x-finalTor: 0.2.???

comment:5 Changed 5 years ago by nickm

Milestone: Tor: 0.2.???Tor: 0.2.7.x-final

These may be worth looking at for 0.2.7.

comment:6 Changed 5 years ago by nickm

Owner: mikeperry deleted
Status: newassigned

comment:7 Changed 5 years ago by nickm

Keywords: 027-triaged-1-in added

Marking some tickets as triaged-in for 0.2.7 based on early triage

comment:8 Changed 5 years ago by isabela

Keywords: SponsorU added
Points: large
Version: Tor: 0.2.7

comment:9 Changed 4 years ago by nickm

Milestone: Tor: 0.2.7.x-finalTor: 0.2.8.x-final

comment:10 Changed 4 years ago by nickm

Keywords: 028-triaged added

comment:11 Changed 4 years ago by nickm

Keywords: SponsorU removed
Sponsor: SponsorU

Bulk-replace SponsorU keyword with SponsorU field.

comment:12 Changed 4 years ago by mikeperry

This may help with the original side channel issue found in #16585. We should keep that in mind when designing these data structures and code. If we're lucky, we may be able to have a set of different types of paths pre-made well before a circuit needs to be built (or even schedule path building on a worker thread?).

Last edited 4 years ago by mikeperry (previous) (diff)

comment:13 Changed 4 years ago by mikeperry

Oh, see also #12595 and #15458 during the design phase here.

comment:14 Changed 4 years ago by mikeperry

Keywords: mike-can added; mike-0.2.5 removed

comment:15 Changed 4 years ago by nickm

Milestone: Tor: 0.2.8.x-finalTor: 0.2.9.x-final
Status: assignednew

Turn most 0.2.8 "assigned" tickets with no owner into "new" tickets for 0.2.9. Disagree? Find somebody who can do it (maybe you?) and get them to take it on for 0.2.8. :)

comment:16 Changed 4 years ago by isabela

Sponsor: SponsorUSponsorU-can

comment:17 Changed 4 years ago by nickm

Keywords: tor-route-testing added

comment:18 Changed 3 years ago by isabela

Points: large6

comment:19 Changed 3 years ago by isabela

Keywords: isaremoved added
Milestone: Tor: 0.2.9.x-finalTor: 0.2.???

comment:20 Changed 3 years ago by teor

Milestone: Tor: 0.2.???Tor: 0.3.???

Milestone renamed

comment:21 Changed 3 years ago by nickm

Keywords: tor-03-unspecified-201612 added
Milestone: Tor: 0.3.???Tor: unspecified

Finally admitting that 0.3.??? was a euphemism for Tor: unspecified all along.

comment:22 Changed 2 years ago by nickm

Keywords: tor-03-unspecified-201612 removed

Remove an old triaging keyword.

comment:23 Changed 2 years ago by nickm

Keywords: 027-triaged-in added

comment:24 Changed 2 years ago by nickm

Keywords: 027-triaged-in removed

comment:25 Changed 2 years ago by nickm

Keywords: 027-triaged-1-in removed

comment:26 Changed 2 years ago by nickm

Keywords: 028-triaged removed

comment:27 Changed 2 years ago by nickm

Keywords: isaremoved removed

comment:28 Changed 2 years ago by nickm

Keywords: path-selection refactor technical-debt added
Severity: Normal
Note: See TracTickets for help on using tickets.