Commit Graph

2179 Commits

Author SHA1 Message Date
David Goulet
4eb783e97b hs: Priority queue for rendezvous requests
If PoW are enabled, use a priority queue by effort for the rendezvous
requests hooked into the mainloop.

Signed-off-by: David Goulet <dgoulet@torproject.org>
2023-05-10 07:37:11 -07:00
David Goulet
f0b63ca242 hs: Move rendezvous circuit data structure
When parsing an INTRODUCE2 cell, we extract data in order to launch the
rendezvous circuit. This commit creates a data structure just for that
data so it can be used by future commits for prop327 in order to copy
that data over a priority queue instead of the whole intro data data
structure which contains pointers that could dissapear.

Signed-off-by: David Goulet <dgoulet@torproject.org>
2023-05-10 07:37:11 -07:00
David Goulet
ca74530b40 hs: Setup service side PoW defenses
Signed-off-by: David Goulet <dgoulet@torproject.org>
2023-05-10 07:37:11 -07:00
David Goulet
8b41e09a77 hs: Client now solve PoW if present
At this commit, the tor main loop solves it. We might consider moving
this to the CPU pool at some point.

Signed-off-by: David Goulet <dgoulet@torproject.org>
2023-05-10 07:37:11 -07:00
David Goulet
26957b47ac hs: Descriptor support for PoW
Signed-off-by: David Goulet <dgoulet@torproject.org>
2023-05-10 07:37:11 -07:00
David Goulet
51ce0bb6ef hs: Add solve and verify PoW functions
Signed-off-by: David Goulet <dgoulet@torproject.org>
2023-05-10 07:37:10 -07:00
David Goulet
c611e328de hs: Add data structure needed for PoW 2023-05-10 07:37:10 -07:00
David Goulet
d79814f1b1 hs: PoW extension encoding
Signed-off-by: David Goulet <dgoulet@torproject.org>
2023-05-10 07:37:10 -07:00
Mike Perry
33c3059c82 Handle infinite loop with only one bridge (or snowflake). 2023-05-04 16:31:08 +00:00
Mike Perry
46e473f43e Prop#329 Pool: Avoid sharing Guards and Middles between circuits.
Conflux must not use the same Guard for each leg; nor the same middle for each
leg.
2023-04-06 15:57:11 +00:00
David Goulet
336a24754d Prop#329 Pool: Handle linking, unlinking, and relaunching conflux circuit legs.
Signed-off-by: David Goulet <dgoulet@torproject.org>
2023-04-06 15:57:11 +00:00
Mike Perry
2f865b4bba Prop#329 streams: Handle stream usage with conflux
This adds utility functions to help stream block decisions, as well as cpath
layer_hint checks for stream cell acceptance, and syncing stream lists
for conflux circuits.

These functions are then called throughout the codebase to properly manage
conflux streams.
2023-04-06 15:57:11 +00:00
Mike Perry
a4ee0c29ee Prop#329: Add purposes for conflux circuits
Because UNLINKED circuits must never be used for streams, but LINKED circuits
can be, we want these separate.
2023-04-06 15:57:10 +00:00
Mike Perry
eac2bad86b Prop#329 params: Consensus parameter and torrc handling
Signed-off-by: David Goulet <dgoulet@torproject.org>
2023-04-06 15:57:10 +00:00
David Goulet
a9fc6c937c protover: Support Relay=5 for Conflux (prop329)
Closes #40721

Signed-off-by: David Goulet <dgoulet@torproject.org>
2023-04-06 15:57:10 +00:00
David Goulet
59456cb3cf Merge branch 'tor-gitlab/mr/700' 2023-03-13 11:22:31 -04:00
Gabriela Moldovan
1a60fa547f metrics: Add HS service side circuit build time metrics.
This adds 2 histogram metrics for hidden services:
* `tor_hs_rend_circ_build_time` - the rendezvous circuit build time in milliseconds
* `tor_hs_intro_circ_build_time` - the introduction circuit build time in milliseconds

The text representation representation of the new metrics looks like this:
```
# HELP tor_hs_rend_circ_build_time The rendezvous circuit build time in milliseconds
# TYPE tor_hs_rend_circ_build_time histogram
tor_hs_rend_circ_build_time_bucket{onion="<elided>",le="1000.00"} 2
tor_hs_rend_circ_build_time_bucket{onion="<elided>",le="5000.00"} 10
tor_hs_rend_circ_build_time_bucket{onion="<elided>",le="10000.00"} 10
tor_hs_rend_circ_build_time_bucket{onion="<elided>",le="30000.00"} 10
tor_hs_rend_circ_build_time_bucket{onion="<elided>",le="60000.00"} 10
tor_hs_rend_circ_build_time_bucket{onion="<elided>",le="+Inf"} 10
tor_hs_rend_circ_build_time_sum{onion="<elided>"} 10824
tor_hs_rend_circ_build_time_count{onion="<elided>"} 10
# HELP tor_hs_intro_circ_build_time The introduction circuit build time in milliseconds
# TYPE tor_hs_intro_circ_build_time histogram
tor_hs_intro_circ_build_time_bucket{onion="<elided>",le="1000.00"} 0
tor_hs_intro_circ_build_time_bucket{onion="<elided>",le="5000.00"} 6
tor_hs_intro_circ_build_time_bucket{onion="<elided>",le="10000.00"} 6
tor_hs_intro_circ_build_time_bucket{onion="<elided>",le="30000.00"} 6
tor_hs_intro_circ_build_time_bucket{onion="<elided>",le="60000.00"} 6
tor_hs_intro_circ_build_time_bucket{onion="<elided>",le="+Inf"} 6
tor_hs_intro_circ_build_time_sum{onion="<elided>"} 9843
tor_hs_intro_circ_build_time_count{onion="<elided>"} 6
```

Signed-off-by: Gabriela Moldovan <gabi@torproject.org>
2023-03-13 11:18:40 -04:00
Gabriela Moldovan
d1264d11c3 metrics: Add support for histograms.
This will enable us to add e.g. circuit build metrics (#40717).

Signed-off-by: Gabriela Moldovan <gabi@torproject.org>
2023-03-13 11:18:40 -04:00
nonameformee
8f50f490a6 Update 3 files
- /src/feature/dirauth/process_descs.c
- /src/test/test_process_descs.c
- /changes/ticket40760
2023-03-12 11:40:52 +00:00
David Goulet
3fa08dc9a7 Merge branch 'tor-gitlab/mr/697' 2023-03-07 09:49:53 -05:00
Gabriela Moldovan
16c6788fbc metrics: Add a reason label to the HS error metrics.
This adds a `reason` label to the `hs_intro_rejected_intro_req_count` and
`hs_rdv_error_count` metrics introduced in #40755.

Metric look up and intialization is now more a bit more involved. This may be
fine for now, but it will become unwieldy if/when we add more labels (and as
such will need to be refactored).

Also, in the future, we may want to introduce finer grained `reason` labels.
For example, the `invalid_introduce2` label actually covers multiple types of
errors that can happen during the processing of an INTRODUCE2 cell (such as
cell parse errors, replays, decryption errors).

Signed-off-by: Gabriela Moldovan <gabi@torproject.org>
2023-03-07 09:46:05 -05:00
David Goulet
73eab76e6d Merge branch 'maint-0.4.7' 2023-03-07 08:39:48 -05:00
Gabriela Moldovan
db4c4d656a
metrics: Add metrics for rendezvous and introduction request failures.
This introduces a couple of new service side metrics:
* `hs_intro_rejected_intro_req_count`, which counts the number of introduction
  requests rejected by the hidden service
* `hs_rdv_error_count`, which counts the number of rendezvous errors as seen by
  the hidden service (this number includes the number of circuit establishment
  failures, failed retries, end-to-end circuit setup failures)

Closes #40755. This partially addresses #40717.

Signed-off-by: Gabriela Moldovan <gabi@torproject.org>
2023-02-16 18:54:30 +00:00
Roger Dingledine
36612b9bf8 vote AuthDirMaxServersPerAddr in consensus params
Directory authorities now include their AuthDirMaxServersPerAddr
config option in the consensus parameter section of their vote. Now
external tools can better predict how they will behave.

In particular, the value should make its way to the
https://consensus-health.torproject.org/#consensusparams page.

Once enough dir auths vote this param, they should also compute a
consensus value for it in the consensus document. Nothing uses this
consensus value yet, but we could imagine having dir auths consult it
in the future.

Implements ticket 40753.
2023-02-13 13:54:29 -05:00
David Goulet
482ce87a8d Merge branch 'maint-0.4.7' 2023-02-13 10:16:13 -05:00
Gabriela Moldovan
21b3397f9b
metrics: Decrement hs_intro_established_count on intro circuit close.
Closes #40751.

Signed-off-by: Gabriela Moldovan <gabi@torproject.org>
2023-02-10 20:31:36 +00:00
Gabriela Moldovan
c98d78c95c
Update find_service documentation.
This updates the docs to stop suggesting `pk` can be NULL, as that doesn't seem
to be the case anymore (`tor_assert(pk)`).

Signed-off-by: Gabriela Moldovan <gabi@torproject.org>
2023-02-10 15:27:43 +00:00
Dimitris Apostolou
c1b940cebf
Fix typos 2023-02-05 00:36:37 +02:00
Roger Dingledine
a4d61c84e3 fix trivial typos 2023-01-30 16:23:24 -05:00
Nick Mathewson
ee153db5a1 Add more test-vectors for key blinding.
These are verified-as-correct against the current C implementation;
adding them here gives us something to copy into Arti.
2023-01-19 12:54:33 -05:00
David Goulet
d02d2a4338 Fix compiler warnings about unused variables
Fixes #40743

Signed-off-by: David Goulet <dgoulet@torproject.org>
2023-01-19 11:18:02 -05:00
David Goulet
637213fce3 Merge branch 'maint-0.4.7' 2023-01-12 10:49:57 -05:00
David Goulet
f2e9ce72d6 dirauth: Reject 0.4.6.x series at the authority level
Closes #40664

Signed-off-by: David Goulet <dgoulet@torproject.org>
2023-01-12 09:07:52 -05:00
David Goulet
1e6d839ce9 Merge branch 'tor-gitlab/mr/668' 2022-12-22 14:03:40 -05:00
Georg Koppen
5ba2bf2551
Add back comments about Stable/familiar decay
Closes: #40734.
2022-12-21 10:43:26 +00:00
Dimitris Apostolou
1da9dec348
Fix typos 2022-12-16 08:09:04 +02:00
David Goulet
58f41c379d Merge branch 'maint-0.4.7' 2022-12-12 13:15:08 -05:00
David Goulet
1d1eb29443 metrics: Fix typo in a label
Fixes #40727

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-12-07 08:43:41 -05:00
David Goulet
9a06fee5a1 Merge branch 'maint-0.4.7' 2022-12-05 13:23:34 -05:00
Mike Perry
a51cd9a569 Ticket 40724: Add metrics for CC circuit counts 2022-12-02 21:50:59 +00:00
Mike Perry
07b521560f Ticket 40724: Additional congestion control metrics 2022-12-01 22:19:08 +00:00
David Goulet
c408d0a7f9 Merge branch 'tor-gitlab/mr/657' 2022-11-28 09:35:53 -05:00
David Goulet
04d8753676 Merge branch 'maint-0.4.7' 2022-11-23 14:54:43 -05:00
David Goulet
fbc9e92fdb relay: Use the configured number of threads for worker work calculation
We cap our number of CPU worker threads to at least 2 even if we have a
single core. But also, before we used to always add one extra thread
regardless of the number of core.

This meant that we were off when re-using the get_num_cpus() function
when calculating our onionskin work overhead because we were always off
by one.

This commit makes it that we always use the number of thread our actual
thread pool was configured with.

Fixes #40719

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-11-23 14:05:10 -05:00
David Goulet
b5afc7d62a Merge branch 'maint-0.4.7' 2022-11-10 09:30:42 -05:00
David Goulet
e94c27c0ab metrics: Split cc with counters and gauges
Part of #40712

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-11-10 08:57:39 -05:00
David Goulet
2737037ccd metrics: Split connections with a counter and gauge
Created and Rejected connections are ever going up counters. While
Opened connections are gauges going up and down.

Fixes #40712

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-11-10 07:29:18 -05:00
David Goulet
f39f8b30f4 Merge branch 'maint-0.4.7' 2022-11-09 15:35:58 -05:00
David Goulet
c13dc8b08a Merge branch 'ticket40674_047_01' into maint-0.4.7 2022-11-09 15:32:18 -05:00
Rasmus Dahlberg
21eac1e8d8 dns: Make TTLs fuzzy at exit relays
This change mitigates DNS-based website oracles by making the time that
a domain name is cached uncertain (+- 4 minutes of what's measurable).

Resolves TROVE-2021-009.

Fixes #40674
2022-11-09 15:30:43 -05:00