Trac issueshttps://gitlab.torproject.org/legacy/trac/-/issues2020-06-13T15:05:30Zhttps://gitlab.torproject.org/legacy/trac/-/issues/21253Add link handshakes to benchmark program2020-06-13T15:05:30ZNick MathewsonAdd link handshakes to benchmark programOur ed25519 handshake may have slowed link handshakes down a little. How much? We should add a couple of items to ./src/test/bench
This is follow-on item for sponsor U, prop220, and #15055.Our ed25519 handshake may have slowed link handshakes down a little. How much? We should add a couple of items to ./src/test/bench
This is follow-on item for sponsor U, prop220, and #15055.Tor: unspecifiedhttps://gitlab.torproject.org/legacy/trac/-/issues/20552Advertise support for ed25519 link handshake using subprotocol versions2020-06-13T15:02:50ZNick MathewsonAdvertise support for ed25519 link handshake using subprotocol versionsNow that #15055 is merged, #15056 will want to know which relays support its link protocol extensions. But to do that, we'll need to expose the fact in descriptors. The canonical way to do that is now with subprotocol versions (see pro...Now that #15055 is merged, #15056 will want to know which relays support its link protocol extensions. But to do that, we'll need to expose the fact in descriptors. The canonical way to do that is now with subprotocol versions (see prop#264).Tor: 0.3.0.x-finalhttps://gitlab.torproject.org/legacy/trac/-/issues/20051Unit tests for ed25519 link handshake code2020-06-13T15:01:00ZNick MathewsonUnit tests for ed25519 link handshake codeWe can't do a halfway job on unit tests for the link handshake; we need to make sure everything invalid fails. So I can't put 15055_wip into needs_review until the test coverage is much higher, and we really test all the different ways ...We can't do a halfway job on unit tests for the link handshake; we need to make sure everything invalid fails. So I can't put 15055_wip into needs_review until the test coverage is much higher, and we really test all the different ways a handshake can go wrong.Tor: 0.2.9.x-finalNick MathewsonNick Mathewsonhttps://gitlab.torproject.org/legacy/trac/-/issues/19889New guard plan - Glue things together!2020-06-13T15:00:10ZAndrea ShepardNew guard plan - Glue things together!New guard plan summarized at https://lists.torproject.org/pipermail/tor-dev/2016-July/011234.html
13) Glue things together!
- Add clean and meaningful logging so that we can *heavily* field test the feature in our machinesNew guard plan summarized at https://lists.torproject.org/pipermail/tor-dev/2016-July/011234.html
13) Glue things together!
- Add clean and meaningful logging so that we can *heavily* field test the feature in our machinesTor: 0.3.0.x-finalNick MathewsonNick Mathewsonhttps://gitlab.torproject.org/legacy/trac/-/issues/19888New guard plan - separate state instances when EntryNodes/ExcludeNodes/etc ar...2020-06-13T15:03:44ZAndrea ShepardNew guard plan - separate state instances when EntryNodes/ExcludeNodes/etc are usedNew guard plan summarized at https://lists.torproject.org/pipermail/tor-dev/2016-July/011234.html
12) Separate state instances when EntryNodes/ExcludeNodes/etc are used
- See prop271 MEANINGFUL_RESTRICTION_FRAC etc.New guard plan summarized at https://lists.torproject.org/pipermail/tor-dev/2016-July/011234.html
12) Separate state instances when EntryNodes/ExcludeNodes/etc are used
- See prop271 MEANINGFUL_RESTRICTION_FRAC etc.Tor: 0.3.0.x-finalNick MathewsonNick Mathewsonhttps://gitlab.torproject.org/legacy/trac/-/issues/19887New guard plan - bridge support2020-06-13T15:00:09ZAndrea ShepardNew guard plan - bridge supportNew guard plan summarized at https://lists.torproject.org/pipermail/tor-dev/2016-July/011234.html
11) Bridge support
- Thoughtworks function: fill_in_from_bidges()New guard plan summarized at https://lists.torproject.org/pipermail/tor-dev/2016-July/011234.html
11) Bridge support
- Thoughtworks function: fill_in_from_bidges()Tor: 0.3.0.x-finalNick MathewsonNick Mathewsonhttps://gitlab.torproject.org/legacy/trac/-/issues/19886New guard plan - update state whenever we get a new consensus2020-06-13T15:00:08ZAndrea ShepardNew guard plan - update state whenever we get a new consensusNew guard plan summarized at https://lists.torproject.org/pipermail/tor-dev/2016-July/011234.html
10) Update state whenever we get a new consensus (section ON_CONSENSUS)
- Update SAMPLED_GUARDS elements (section SAMPLED)
- Remove obso...New guard plan summarized at https://lists.torproject.org/pipermail/tor-dev/2016-July/011234.html
10) Update state whenever we get a new consensus (section ON_CONSENSUS)
- Update SAMPLED_GUARDS elements (section SAMPLED)
- Remove obsolete/expired guards
- See entry_guards_compute_status() / remove_obsolete_entry_guards()
- Thoughtworks function: entry_guards_update_profiles()Tor: 0.3.0.x-finalNick MathewsonNick Mathewsonhttps://gitlab.torproject.org/legacy/trac/-/issues/19884Retry schedule for guards per new guard plan2020-06-13T15:00:07ZAndrea ShepardRetry schedule for guards per new guard planNew guard plan summarized at https://lists.torproject.org/pipermail/tor-dev/2016-July/011234.html
8) Retry schedule for guards (section RETRYING)
- See entry_is_time_to_retry()
- UnittestNew guard plan summarized at https://lists.torproject.org/pipermail/tor-dev/2016-July/011234.html
8) Retry schedule for guards (section RETRYING)
- See entry_is_time_to_retry()
- UnittestTor: 0.3.0.x-finalNick MathewsonNick Mathewsonhttps://gitlab.torproject.org/legacy/trac/-/issues/19883Maintain CONFIRMED_GUARDS per new guard plan2020-06-13T15:00:06ZAndrea ShepardMaintain CONFIRMED_GUARDS per new guard planNew guard plan summarized at https://lists.torproject.org/pipermail/tor-dev/2016-July/011234.html
7) Maintain CONFIRMED_GUARDS
- Add guard to CONFIRMED_GUARDS when circuit succeeds
- Fill in state info for each confirmed guard (confir...New guard plan summarized at https://lists.torproject.org/pipermail/tor-dev/2016-July/011234.html
7) Maintain CONFIRMED_GUARDS
- Add guard to CONFIRMED_GUARDS when circuit succeeds
- Fill in state info for each confirmed guard (confirmed_on_date, etc.)
- Migration from old state format to new
- Thoughtworks unittest: test_used_guards_parse_state()Tor: 0.3.0.x-finalNick MathewsonNick Mathewsonhttps://gitlab.torproject.org/legacy/trac/-/issues/19882New guard plan - update guard state when a circuit fails/succeeds2020-06-13T15:00:06ZAndrea ShepardNew guard plan - update guard state when a circuit fails/succeedsNew guard plan summarized at https://lists.torproject.org/pipermail/tor-dev/2016-July/011234.html
6) Update guard state when a circuit fails/succeeds
- Section ON_FAIL and ON_SUCCESS
- See entry_guard_register_connect_status()
- Unit...New guard plan summarized at https://lists.torproject.org/pipermail/tor-dev/2016-July/011234.html
6) Update guard state when a circuit fails/succeeds
- Section ON_FAIL and ON_SUCCESS
- See entry_guard_register_connect_status()
- UnittestTor: 0.3.0.x-finalNick MathewsonNick Mathewsonhttps://gitlab.torproject.org/legacy/trac/-/issues/19881New guard plan - guard selection for circuits2020-06-13T15:00:05ZAndrea ShepardNew guard plan - guard selection for circuitsNew guard plan summarized at https://lists.torproject.org/pipermail/tor-dev/2016-July/011234.html
5) Selecting guards for circuits
- Meant to replace choose_random_entry_impl()
- See section SELECTING in prop271
- Add new circuit sta...New guard plan summarized at https://lists.torproject.org/pipermail/tor-dev/2016-July/011234.html
5) Selecting guards for circuits
- Meant to replace choose_random_entry_impl()
- See section SELECTING in prop271
- Add new circuit states to or_circuit_t
- Implement the guard selection logic
- Unittests on circuit state machine
- Unittests on guard selection logicTor: 0.3.0.x-finalNick MathewsonNick Mathewsonhttps://gitlab.torproject.org/legacy/trac/-/issues/19880Maintain set of PRIMARY_GUARDS per new guard plan2020-06-13T15:00:05ZAndrea ShepardMaintain set of PRIMARY_GUARDS per new guard planNew guard plan summarized at https://lists.torproject.org/pipermail/tor-dev/2016-July/011234.html
4) Maintain set of PRIMARY_GUARDS
- Functions to extract set of (live) primary guards out of FILTERED_GUARDS
- Unittest
- Thoughtworks ...New guard plan summarized at https://lists.torproject.org/pipermail/tor-dev/2016-July/011234.html
4) Maintain set of PRIMARY_GUARDS
- Functions to extract set of (live) primary guards out of FILTERED_GUARDS
- Unittest
- Thoughtworks function: retry_primary_guards() / next_primary_guard()
- Thoughtworks unittests: test_next_primary_guard()Tor: 0.3.0.x-finalNick MathewsonNick Mathewsonhttps://gitlab.torproject.org/legacy/trac/-/issues/19879Derive FILTERED_GUARDS / USABLE_FILTERED_GUARDS from SAMPLED_GUARDS per new g...2020-06-13T15:00:04ZAndrea ShepardDerive FILTERED_GUARDS / USABLE_FILTERED_GUARDS from SAMPLED_GUARDS per new guard planNew guard plan summarized at https://lists.torproject.org/pipermail/tor-dev/2016-July/011234.html
3) Derive FILTERED_GUARDS / USABLE_FILTERED_GUARDS from SAMPLED_GUARDS
- The filtering function can be called at any point (e.g. ON_CONSE...New guard plan summarized at https://lists.torproject.org/pipermail/tor-dev/2016-July/011234.html
3) Derive FILTERED_GUARDS / USABLE_FILTERED_GUARDS from SAMPLED_GUARDS
- The filtering function can be called at any point (e.g. ON_CONSENSUS)
- Write unittests ensuring correctness of filtering
- See populate_live_entry_guards()
- Thoughtworks function: filter_set() / filter_sampled()Tor: 0.3.0.x-finalNick MathewsonNick Mathewsonhttps://gitlab.torproject.org/legacy/trac/-/issues/19878Sample SAMPLED_GUARDS from GUARDS per new guard plan2020-06-13T15:00:03ZAndrea ShepardSample SAMPLED_GUARDS from GUARDS per new guard planNew guard plan summarized at https://lists.torproject.org/pipermail/tor-dev/2016-July/011234.html
2) Sample SAMPLED_GUARDS from GUARDS
- Fill in state for each sampled guard (added_on_date, etc.)
- Save/load SAMPLED_GUARDS to/from sta...New guard plan summarized at https://lists.torproject.org/pipermail/tor-dev/2016-July/011234.html
2) Sample SAMPLED_GUARDS from GUARDS
- Fill in state for each sampled guard (added_on_date, etc.)
- Save/load SAMPLED_GUARDS to/from state
- Unittests for sampling/saving/loading
- Thoughtworks function: fill_sampled_guards_from_entrynodes()
- Thoughtworks unittest: test_fill_in_sampled_set()Tor: 0.3.0.x-finalNick MathewsonNick Mathewsonhttps://gitlab.torproject.org/legacy/trac/-/issues/19877Implement new guard selection algorithm of prop 2712020-06-13T15:03:49ZAndrea ShepardImplement new guard selection algorithm of prop 271Parent ticket for tasks implementing the new guard selection algorithm described in https://lists.torproject.org/pipermail/tor-dev/2016-July/011234.htmlParent ticket for tasks implementing the new guard selection algorithm described in https://lists.torproject.org/pipermail/tor-dev/2016-July/011234.htmlTor: 0.3.0.x-finalNick MathewsonNick Mathewsonhttps://gitlab.torproject.org/legacy/trac/-/issues/19858Move guard state out of globals per new guard plan2020-06-13T15:02:10ZAndrea ShepardMove guard state out of globals per new guard planNew guard plan summarized here at https://lists.torproject.org/pipermail/tor-dev/2016-July/011234.html
1) Create main guard selection state data structure (instead of using global variables)
- Ideally there should be no global variable...New guard plan summarized here at https://lists.torproject.org/pipermail/tor-dev/2016-July/011234.html
1) Create main guard selection state data structure (instead of using global variables)
- Ideally there should be no global variables, so that in the future we can have multiple parallel guardsets (e.g. prop247)
- Thoughtworks: guard_selection_tTor: 0.3.0.x-finalAndrea ShepardAndrea Shepardhttps://gitlab.torproject.org/legacy/trac/-/issues/19468Revise prop259 to fit the Tor networking API2020-06-13T14:58:51ZGeorge KadianakisRevise prop259 to fit the Tor networking APIProposal 259 needs some more design work before it can be implemented in little-t-tor.
comment:37:ticket:12595 contains a summary of the current work that needs to be done.Proposal 259 needs some more design work before it can be implemented in little-t-tor.
comment:37:ticket:12595 contains a summary of the current work that needs to be done.Tor: 0.2.9.x-finalNick MathewsonNick Mathewsonhttps://gitlab.torproject.org/legacy/trac/-/issues/19303Revise {extend,create}_cell_format to use trunnel2020-06-13T14:58:22ZNick MathewsonRevise {extend,create}_cell_format to use trunnelAs part of the prop220 extend cell work, we'll be making these functions bigger. It's time to be safe and make them use trunnel.As part of the prop220 extend cell work, we'll be making these functions bigger. It's time to be safe and make them use trunnel.Tor: 0.2.9.x-finalNick MathewsonNick Mathewsonhttps://gitlab.torproject.org/legacy/trac/-/issues/19302Send ed25519 IDs in EXTEND2 cells2020-06-13T14:58:21ZNick MathewsonSend ed25519 IDs in EXTEND2 cellsOnce we have #19301 complete, we can update clients to generate circuits using ed25519 identities.
We'll have to actually store the ed25519 identity in the extend_cell_t when we make in .
We'll have to encode it as part of extend_cell...Once we have #19301 complete, we can update clients to generate circuits using ed25519 identities.
We'll have to actually store the ed25519 identity in the extend_cell_t when we make in .
We'll have to encode it as part of extend_cell_format.
We'll have to decide whether to use it: it's only okay to send the ed25519 ID when both servers support the new link handshake.
We can enable this with a tristate, for testing, and to make sure that this turns on for a big pile of clients at once.Tor: 0.3.0.x-finalNick MathewsonNick Mathewsonhttps://gitlab.torproject.org/legacy/trac/-/issues/19301Accept Ed25519 identities in EXTEND2 cells2020-06-13T14:58:20ZNick MathewsonAccept Ed25519 identities in EXTEND2 cellsOnce we have the link-connection part of prop220 implemented, we can start here, and allow relays to start accepting Ed25519 identities in their extend2 cells.
We'll have to update extend_cell_parse to handle these, and extend_cell_t to...Once we have the link-connection part of prop220 implemented, we can start here, and allow relays to start accepting Ed25519 identities in their extend2 cells.
We'll have to update extend_cell_parse to handle these, and extend_cell_t to contain them.
We'll have to update channel_get_for_extend to look up by the complete set of link specifiers.
We'll have to update channel_connect_for_circuit to accept an ed25519 ID, if it hasn't already.
And we'll have to update circuit_extend to handle all that properly.Tor: 0.3.0.x-finalNick MathewsonNick Mathewson