Commit Graph

28153 Commits

Author SHA1 Message Date
trinity-1686a
0c634999c1
don't emit key expiration metric instead of setting it to zero 2023-03-19 10:31:28 +01:00
Saksham Mittal
bbb3396d79
Add test for \r in directory parsing 2023-03-19 08:28:29 +05:30
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
85f5318f7f Merge branch 'tor-gitlab/mr/696' 2023-03-07 08:52:34 -05:00
David Goulet
73eab76e6d Merge branch 'maint-0.4.7' 2023-03-07 08:39:48 -05:00
trinity-1686a
0222fc4d71
add new metrics entry for cert expiration 2023-03-06 13:56:39 +01: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
Richard Pospesel
c71f31dccc Reworded OpenSSL bug 7712 detection warning to avoid OpenSSL 1.1.1b detection false positive. 2023-02-16 13:27: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
Nick Mathewson
43d3a41157 Extend blinding testvec with timeperiod test.
When I copied this to arti, I messed up and thought that the default
time period was 1440 seconds for some weird testing reason. That led
to confusion.

This commit adds a test case that time period 1440 is May 20, 1973:
now arti and c tor match!
2023-02-10 08:11:39 -05:00
Gabriela Moldovan
a9c7cd6b2c
Fix small typo in mainloop.c docs.
The docs should reference `tor_event_new()` rather than `tor_libevent_new()`.

Signed-off-by: Gabriela Moldovan <gabi@torproject.org>
2023-02-07 12:15:12 +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
David Goulet
7770c5a2ae Merge branch 'tor-gitlab/mr/686' 2023-01-27 08:47:46 -05:00
David Goulet
fc11b38f2a Merge branch 'maint-0.4.7' 2023-01-26 13:11:22 -05:00
David Goulet
e390a7cdee Merge branch 'tor-gitlab/mr/687' into maint-0.4.7 2023-01-26 13:11:18 -05:00
David Goulet
7b87ecf7e2 Merge branch 'maint-0.4.5' into maint-0.4.7 2023-01-25 14:13:35 -05:00
Micah Elizabeth Scott
a1d3d201ae compress_lzma: New enum values from liblzma 5.3.x
Add new liblzma enums (LZMA_SEEK_NEEDED and LZMA_RET_INTERNAL*)
conditional to the API version they arrived in. The first stable
version of liblzma this affects is 5.4.0

Fixes #40741

Signed-off-by: Micah Elizabeth Scott <beth@torproject.org>
2023-01-25 14:13:31 -05:00
David Goulet
bff6d7a944 relay: Use the right max queue size value in log
Fixes #40745

Signed-off-by: David Goulet <dgoulet@torproject.org>
2023-01-25 14:10:20 -05:00
Nick Mathewson
a5d8c9fef7 Add a test vector for disaster SRV calculation. 2023-01-25 09:04:07 -05:00
Micah Elizabeth Scott
3d7e3af91e compress_lzma: New enum values from liblzma 5.3.x
Add new liblzma enums (LZMA_SEEK_NEEDED and LZMA_RET_INTERNAL*)
conditional to the API version they arrived in. The first stable
version of liblzma this affects is 5.4.0

Fixes #40741

Signed-off-by: Micah Elizabeth Scott <beth@torproject.org>
2023-01-19 13:59:08 -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
49f10c5130 Merge branch 'tor-gitlab/mr/683' 2023-01-19 10:10:14 -05:00
Nick Mathewson
5629a391c2 Add a test vector for crypto_mac_sha3 2023-01-19 09:09:09 -05:00
Tor CI Release
fa2face3b5 version: Bump version to 0.4.7.13-dev 2023-01-12 12:09:34 -05:00
Tor CI Release
40e39b1e65 version: Bump version to 0.4.5.16-dev 2023-01-12 12:09:10 -05:00
Tor CI Release
89d1db6ad9 version: Bump version to 0.4.7.13 2023-01-12 11:15:53 -05:00
Tor CI Release
5a085a8f0f version: Bump version to 0.4.5.16 2023-01-12 11:15:23 -05:00
David Goulet
d9821bdea5 Merge branch 'maint-0.4.7' 2023-01-12 11:07:40 -05:00
David Goulet
64cebf4e1b Merge branch 'maint-0.4.5' into maint-0.4.7 2023-01-12 11:07:39 -05:00
Tor CI Release
64c0a9fa74 fallbackdir: Update list generated on January 12, 2023 2023-01-12 11:07:33 -05:00
Tor CI Release
049d0818c6 Update geoip files to match ipfire location db, 2023/01/12. 2023-01-12 11:07:23 -05:00
David Goulet
610b791aa6 Merge branch 'maint-0.4.7' 2023-01-12 10:52:35 -05:00
David Goulet
0df4083299 Merge branch 'maint-0.4.5' into maint-0.4.7 2023-01-12 10:52:35 -05:00
David Goulet
7b83e336ec Merge branch 'ticket40730_045_01' into maint-0.4.5 2023-01-12 10:52:31 -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
754dbcd6d3 Merge branch 'maint-0.4.7' 2023-01-11 13:14:45 -05:00
Mike Perry
c6ef04e0d0 Coverity CID 1518991: Tighter bounds on consensus param value.
This prevents sign extension overflow in cwnd_became_full().
2023-01-11 17:32:20 +00:00
David Goulet
b38630ca56 Merge branch 'maint-0.4.7' 2023-01-11 09:03:29 -05:00
David Goulet
b9c7825f0e Merge branch 'maint-0.4.5' into maint-0.4.7 2023-01-11 09:03:29 -05:00
David Goulet
85547a9b5b Merge branch 'tor-gitlab/mr/538' into maint-0.4.5 2023-01-11 09:03:26 -05:00
David Goulet
5d6e0b8e13 Merge branch 'maint-0.4.7' 2023-01-10 15:58:28 -05:00
Mike Perry
482cde5931 Do not reset our RTT in slow start.
If a circuit only sends a tiny amount of data such that its cwnd is not
full, it won't increase its cwnd above the minimum. Since slow start circuits
should never hit the minimum otherwise, we can just ignore them for RTT reset
to handle this.
2023-01-10 20:47:11 +00:00
David Goulet
d6cf3ca5c1 Merge branch 'tor-gitlab/mr/678' 2023-01-10 11:57:07 -05:00
David Goulet
c50496036b cc: Rename function to avoid confusion
Signed-off-by: David Goulet <dgoulet@torproject.org>
2023-01-10 11:56:21 -05:00
Mike Perry
5ddd3a9069 Safety fixes to RFC3742 2023-01-10 11:56:21 -05:00
Mike Perry
a9a27ffa3a Reduce size of congestion control next_*_event fields.
Since these are derived from the number of SENDMEs in a cwnd/cc update,
and a cwnd should not exceed ~10k, there's plenty of room in uint16_t
for them, even if the network gets significantly faster.
2023-01-10 11:56:21 -05:00
Mike Perry
f4499bb5e2 Clean up next_cc_event handling. 2023-01-10 11:56:21 -05:00
Mike Perry
48de1a392e Avoid increasing the congestion window if it is not full.
Also provides some stickiness, so that once full, the congestion window is
considered still full for the rest of an update cycle, or the entire
congestion window.

In this way, we avoid increasing the congestion window if it is not fully
utilized, but we can still back off in this case. This substantially reduces
queue use in Shadow.
2023-01-10 11:56:21 -05:00
David Goulet
c420667a2e Merge branch 'tor-gitlab/mr/676' 2023-01-10 11:53:10 -05:00
Mike Perry
8c017e9cff Merge branch 'mr-674-fixup' into main+mr-674-fixup 2023-01-10 16:18:41 +00:00
David Goulet
ce7476cb59 Merge branch 'maint-0.4.7' 2023-01-10 11:15:36 -05:00
David Goulet
35e221688b Merge branch 'tor-gitlab/mr/675' into maint-0.4.7 2023-01-10 11:15:32 -05:00
David Goulet
fd86420d96 cc: Rename function to avoid confusion
Signed-off-by: David Goulet <dgoulet@torproject.org>
2023-01-10 15:46:03 +00:00
Mike Perry
90e67f34a7 Safety fixes to RFC3742 2023-01-10 15:46:03 +00:00
Mike Perry
b7759403bf Reduce size of congestion control next_*_event fields.
Since these are derived from the number of SENDMEs in a cwnd/cc update,
and a cwnd should not exceed ~10k, there's plenty of room in uint16_t
for them, even if the network gets significantly faster.
2023-01-10 15:46:03 +00:00
Mike Perry
967ae3ab0e Clean up next_cc_event handling. 2023-01-10 15:46:03 +00:00
Mike Perry
7a06763b22 Avoid increasing the congestion window if it is not full.
Also provides some stickiness, so that once full, the congestion window is
considered still full for the rest of an update cycle, or the entire
congestion window.

In this way, we avoid increasing the congestion window if it is not fully
utilized, but we can still back off in this case. This substantially reduces
queue use in Shadow.
2023-01-10 15:46:03 +00:00
David Goulet
4db610d6d9 state: Fix segfault on malformed file
Having no TotalBuildTimes along a positive CircuitBuildAbandonedCount
count lead to a segfault. We check for that condition and then BUG + log
warn if that is the case.

It should never happened in theory but if someone modified their state
file, it can lead to this problem so instead of segfaulting, warn.

Fixes #40437

Signed-off-by: David Goulet <dgoulet@torproject.org>
2023-01-10 09:25:50 -05:00
David Goulet
7e055c383c Merge branch 'maint-0.4.7' 2023-01-10 09:12:20 -05:00
David Goulet
d456885dac shellcheck: Fix new warnings
Nothing important, mostly false positive except one case.

Signed-off-by: David Goulet <dgoulet@torproject.org>
2023-01-10 09:11:58 -05:00
David Goulet
726e9ec0a3 sandbox: Allow my-consensus-* files for an authority
Fixes #40729

Signed-off-by: David Goulet <dgoulet@torproject.org>
2023-01-10 09:02:13 -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
David Goulet
923463a1e6 Fix duplicate code after tor-gitlab/mr/671 forward merge
Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-12-20 09:11:30 -05:00
David Goulet
713efae94b Merge branch 'maint-0.4.7' 2022-12-20 09:09:47 -05:00
Alex Xu (Hello71)
1d9166c8c9 Enable IP_BIND_ADDRESS_NO_PORT if supported
Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-12-20 09:09:33 -05:00
Dimitris Apostolou
1da9dec348
Fix typos 2022-12-16 08:09:04 +02:00
David Goulet
cfdc9f9d29 circ: Add function to learn if queue is full
Related to #40731

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-12-14 10:19:14 -05:00
David Goulet
03ddeb9539 Merge branch 'tor-gitlab/mr/660' 2022-12-12 15:10:06 -05:00
David Goulet
da48104c99 Merge branch 'tor-gitlab/mr/667' into maint-0.4.7 2022-12-12 15:07:00 -05:00
David Goulet
58f41c379d Merge branch 'maint-0.4.7' 2022-12-12 13:15:08 -05:00
David Goulet
a282145b36 socks: Make SafeSocks refuse SOCKS4 and accept SOCKS4a
The logic was inverted. Introduced in commit
9155e08450.

This was reported through our bug bounty program on H1. It fixes the
TROVE-2022-002.

Fixes #40730

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-12-12 10:02:07 -05:00
qontinuum
7dd55c29f9
Replace socket_failed_from_resource_exhaustion() by socket_failed_from_fd_exhaustion() 2022-12-11 10:14:23 +01:00
qontinuum
5852319bd4
Isolate warn_about_resource_exhaution() 2022-12-11 10:14:18 +01: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
Tor CI Release
9dbc294f94 version: Bump version to 0.4.7.12-dev 2022-12-06 11:14:16 -05:00
Tor CI Release
b117ce48db version: Bump version to 0.4.5.15-dev 2022-12-06 11:14:09 -05:00
Tor CI Release
236b9ff513 version: Bump version to 0.4.7.12 2022-12-06 10:22:24 -05:00
Tor CI Release
2be4c8319a version: Bump version to 0.4.5.15 2022-12-06 10:22:12 -05:00
David Goulet
d75d02d202 Merge branch 'maint-0.4.7' 2022-12-06 10:10:41 -05:00
David Goulet
d889eba875 Merge branch 'maint-0.4.5' into maint-0.4.7 2022-12-06 10:10:41 -05:00
Tor CI Release
1992c553d5 fallbackdir: Update list generated on December 06, 2022 2022-12-06 10:09:32 -05:00
Tor CI Release
ec0414270a Update geoip files to match ipfire location db, 2022/12/06. 2022-12-06 10:09:26 -05:00
David Goulet
c20732e423 fallbackdir: Update files from latest 047 release
We need the fallbackdir file to be the same so our release CI can
generate a new list and apply it uniformly on all series.

(Same as geoip)

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-12-06 09:59:27 -05:00
David Goulet
8b345f8ced geoip: Update files from latest 047 release
We need all geoip files to be the same so our release CI can generate a
new list and apply it uniformly on all series.

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-12-06 09:47:55 -05:00
David Goulet
60f70be547 Merge branch 'maint-0.4.7' 2022-12-06 08:56:05 -05:00
David Goulet
01efb15496 Merge branch 'maint-0.4.5' into maint-0.4.7 2022-12-06 08:56:04 -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
Roger Dingledine
72b04a5aa4 dirauth: rotate moria1 keys and ports
Rotate the relay identity key and v3 identity key for moria1. They
have been online for more than a decade, there was a known potential
compromise, and anyway refreshing keys periodically is good practice.

Advertise new ports too, to avoid confusion.

Closes ticket 40722.
2022-11-29 20:33:58 -05:00
Rasmus Dahlberg
15efc25fb5 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-28 10:25:06 -05:00
Rasmus Dahlberg
be7afe658e Clip DNS TTL values once in event callback
This change ensures that other parts of the code base always operate on
the same clipped TTL values, notably without being aware of clipping.
2022-11-28 10:25:04 -05:00
David Goulet
21121eb231 Merge branch 'tor-gitlab/mr/652' 2022-11-28 09:37:12 -05:00
David Goulet
c408d0a7f9 Merge branch 'tor-gitlab/mr/657' 2022-11-28 09:35:53 -05:00
David Goulet
3ac08ac200 Merge branch 'tor-gitlab/mr/658' 2022-11-28 09:33:32 -05:00
Vinícius Zavam
642e56bdb6
perform proper 'OR' while checking defined vars
* the || is not possible with #ifdef statement;
  * here the #ifdef turns into '#if defined()'.
2022-11-27 18:41:09 +00:00
qontinuum
0b015c9731
Rely on kernel errno when logging resource exhaustion
Signed-off-by: qontinuum <qontinuum@monaco.mc>
2022-11-25 19:38:48 +01: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
b9de73e46e cpu: Set number of threads to number of cores
Cap this to 2 threads always because we need a low and high priority
thread even with a single core.

Fixes #40713

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-11-23 13:52:36 -05:00
David Goulet
8713d9762a log: Remove extra newline in a log statement
Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-11-23 13:28:22 -05:00
Tor CI Release
cca19a4099 version: Bump version to 0.4.7.11-dev 2022-11-10 10:21:05 -05:00
Tor CI Release
ffcb8a76af version: Bump version to 0.4.7.11 2022-11-10 09:51:29 -05:00
David Goulet
e14c4fe771 Merge branch 'maint-0.4.7' 2022-11-10 09:44:52 -05:00
Tor CI Release
58bd4e0899 fallbackdir: Update list generated on November 10, 2022 2022-11-10 09:43:55 -05:00
Tor CI Release
e39be4a14f Update geoip files to match ipfire location db, 2022/11/10. 2022-11-10 09:43:47 -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
David Goulet
560d44b08b Merge branch 'maint-0.4.7' 2022-11-09 15:29:04 -05:00
David Goulet
780ca741f3 relay: Cache onion queue parameters on consensus change
This is part of the fast path so we need to cache consensus parameters
instead of querying it everytime we need to learn a value.

Part of #40704

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-11-09 15:12:51 -05:00
David Goulet
e3f6908984 relay: Make the max pending tasks per CPU a consensus parameter
Until now, there was this magic number (64) used as the maximum number
of tasks a CPU worker can take at once.

This commit makes it a consensus parameter so our future selves can
think of a better value depending on network conditions.

Part of #40704

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-11-09 13:13:21 -05:00
David Goulet
9c8c7804d5 relay: Add the onion_queue_wait_cutoff consensus param
Transform the hardcoded value ONIONQUEUE_WAIT_CUTOFF into a consensus
parameter so we can control it network wide.

Closes #40704

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-11-09 11:57:32 -05:00
David Goulet
93523ed0d6 relay: Make MaxOnionQueueDelay into a consensus param
Part of #40704

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-11-09 11:57:32 -05:00
David Goulet
bd055a258a Merge branch 'maint-0.4.7' 2022-11-09 11:51:52 -05:00
David Goulet
4db03ac360 Merge branch 'tor-gitlab/mr/654' into maint-0.4.7 2022-11-09 11:51:46 -05:00
Mike Perry
04fafeb2dd metrics: Reorganize state labels so rate() can be applied
Part of #40708.
2022-11-09 11:48:42 -05:00
Mike Perry
09d32ac667 metrics: Use N_EWMA for moving avg, with N=100.
Part of #40708.
2022-11-09 11:48:42 -05:00
David Goulet
8b8873b759 Merge branch 'maint-0.4.7' 2022-11-08 15:26:44 -05:00
David Goulet
5b0103cfb4 Merge branch 'tor-gitlab/mr/651' into maint-0.4.7 2022-11-08 15:25:08 -05:00
Mike Perry
59bef48490 metrics: Record percentage of blocked channels
Part of #40708.
2022-11-08 18:25:07 +00:00
David Goulet
56ee2131f1 Merge branch 'maint-0.4.7' 2022-11-08 12:47:17 -05:00
Mike Perry
00633bc619 metrics: Report amount of cwnd drop from delta and gamma
Part of #40708.
2022-11-08 12:47:14 -05:00
David Goulet
2adc73afdb Merge branch 'maint-0.4.7' 2022-11-08 12:36:44 -05:00
David Goulet
fde87096c3 Merge branch 'tor-gitlab/mr/650' into maint-0.4.7 2022-11-08 12:36:19 -05:00
David Goulet
d634a5ebc7 relay: Remove unused conn->ext_or_conn_id
This also incidently removes a use of uninitialized stack data from the
connection_or_set_ext_or_identifier() function.

Fixes #40648

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-11-08 12:35:09 -05:00
David Goulet
2066e0494c math: Replace naughty macro by an inline function
Part of #40708

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-11-07 14:49:41 -05:00
Mike Perry
fec9757a37 metrics: Add flow control metrics.
Part of #40708.
2022-11-07 09:55:06 -05:00
Mike Perry
2f7e05d89d metrics: Add stats when the clock stalls.
Part of #40708.
2022-11-07 09:55:06 -05:00
Mike Perry
83fdaff7c0 metrics: Add running average of CC cwnd in slow start when closing circuit
Count slow start separately.

Part of #40708

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-11-07 09:55:06 -05:00
David Goulet
62ce557b0b metrics: Add stats when reaching vegas delta or ss_cwnd_max
Part of #40708

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-11-07 09:55:06 -05:00
David Goulet
a0e72fcb97 metrics: Add running average of CC cwnd when closing circuit
Part of #40708

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-11-07 09:55:06 -05:00
David Goulet
c565ef9c58 metrics: Add running average of CC cwnd when exiting slow start
Part of #40708

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-11-07 09:55:06 -05:00
Vinícius Zavam
bd64e6bd08
fix: %s/param.sh/param.h
while here also reflect the check for __NETBSD_SOURCE on
tor_libc_get_version_str
2022-11-05 20:51:26 +00:00
Vinícius Zavam
cc95be8e17
fix: we shall not produce warnings compiling tor 2022-11-05 20:49:04 +00:00
Vinícius Zavam
64f8490ede
present __DragonFly_version, from DragonFlyBSD 2022-11-05 18:58:59 +00:00
Vinícius Zavam
2077b880d8
once NetBSD was presented, return its version
* defined by __NetBSD_Version__ on <sys/param.h> too.
2022-11-05 18:46:09 +00:00
Vinícius Zavam
8a879395ab
make tor_libc_get_name aware of NetBSD
* __NETBSD_SOURCE was used here to verify if we are running on NetBSD
2022-11-05 18:41:17 +00:00
Vinícius Zavam
c98ec6d001
return what OpenBSD gives as base system version
* it also uses sys/param.h to track its version;
  * present that to tor_libc_get_version_str() as libc version;

  while here, we also fix the return of FreeBSD version

  * __FreeBSD_version is the correct var tracking the OSVERSION
2022-11-05 18:38:04 +00:00
Vinícius Zavam
9c7f919d6f
should we identify __FreeBSD__, return its version
* we use OSVERSION here (defined by __FreeBSD__);
  * it's part of the <sys/param.h> include;
  * that tracks all noteworthy changes made to the base system.
2022-11-05 18:31:46 +00:00
Vinícius Zavam
dba3090a68
return BSD if tor_libc_get_name sees __BSD_VISIBLE
* __BSD_VISIBLE is defined by systems like FreeBSD and OpenBSD;
  * that also extends to DragonFlyBSD;
  * it's used on stdlib.h and ctypes.h on those systems.
2022-11-05 18:17:12 +00:00
David Goulet
6196e9596a metrics: Add connection socket family to metrics
Adds either ipv4 or ipv6 to the "tor_relay_connections_total" stats.

Closes #40710

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-11-03 13:05:21 -04:00
David Goulet
87e820a0c5 metrics: Add stats for num circ reaching max cell outq
Part of #40708

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-11-03 09:37:38 -04:00
Rasmus Dahlberg
0fe2096144 Clip DNS TTL values once in event callback
This change ensures that other parts of the code base always operate on
the same clipped TTL values, notably without being aware of clipping.
2022-11-01 09:29:19 -04:00
David Goulet
b04705305b Merge branch 'tor-gitlab/mr/649' 2022-11-01 09:14:33 -04:00
David Goulet
15e5b203cd Merge branch 'tor-gitlab/mr/594' 2022-11-01 09:11:29 -04:00
Alexander Færøy
75d12dffe7 Remove BUG() in Windows process read callback.
This BUG() was added when the code was written to see if this callback
was ever executed after we marked the handle as EOF. It turns out, it
does, but we handle it gracefully. We can therefore remove the BUG().

Fixes tpo/core/tor#40596.
2022-11-01 11:11:20 +01:00
David Goulet
c733ccda99 Merge branch 'tor-gitlab/mr/579' 2022-10-31 15:28:36 -04:00
David Goulet
2a838c196d Merge branch 'maint-0.4.7' 2022-10-31 15:00:15 -04:00
David Goulet
3596d193be Merge branch 'tor-gitlab/mr/636' 2022-10-31 14:15:00 -04:00
David Goulet
619dd35321 sandbox: Add my-consensus-<flavor-name> to sandbox for dirauth
Fixese #40663

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-10-31 11:37:43 -04:00
David Goulet
65a85a9d23 Merge branch 'maint-0.4.7' 2022-10-31 11:21:21 -04:00
David Goulet
19b080f2aa Merge branch 'tor-gitlab/mr/646' 2022-10-28 12:07:51 -04:00
David Goulet
5db238f3e3 thread: Bump max detectable CPU from 16 to 128
Lets take advantage of those beefy machines ;).

Closes #40703

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-10-28 11:28:43 -04:00
Jeremy Saklad
7e80ad4787
relay: Skip warnings for single onion services
Single onion services are not secret, so there is no added risk from
using accounting or running a relay in the same instance.

Related to #40691
2022-10-28 09:15:14 -05:00
Roger Dingledine
338185d840 resolve a BUG() on relays at startup
Remove a harmless "Bug" log message that can happen in
relay_addr_learn_from_dirauth() on relays during startup:

tor_bug_occurred_(): Bug: ../src/feature/relay/relay_find_addr.c:225: relay_addr_learn_from_dirauth: Non-fatal assertion !(!ei) failed. (on Tor 0.4.7.10 )
Bug: Tor 0.4.7.10: Non-fatal assertion !(!ei) failed in relay_addr_learn_from_dirauth at ../src/feature/relay/relay_find_addr.c:225. Stack trace: (on Tor 0.4.7.10 )

Finishes fixing bug 40231.

Fixes bug 40523; bugfix on 0.4.5.4-rc.
2022-10-27 20:07:48 -04:00
David Goulet
3c58fa8a6f Merge branch 'maint-0.4.7' 2022-10-27 11:41:48 -04:00
David Goulet
72f52d2c85 Merge branch 'tor-gitlab/mr/644' into maint-0.4.7 2022-10-27 11:41:43 -04:00
David Goulet
0918cc2783 Merge branch 'maint-0.4.7' 2022-10-27 11:41:26 -04:00
David Goulet
6d40e980fb metrics: Treat relay connections as gauge, not counter
Fixes #40699

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-10-27 11:37:21 -04:00
David Goulet
177f3a40eb metrics: Add number of opened circuits to MetricsPort
Related to #40194

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-10-27 10:48:52 -04:00
David Goulet
1a2d93f72a relay: Add our consensus relay flag to MetricsPort
Related to #40194

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-10-27 10:48:52 -04:00
David Goulet
48ab17cc72 metrics: Add traffic related stats to MetricsPort
At this commit, bytes read and written are exported.

Related to #40194

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-10-27 10:48:48 -04:00
David Goulet
cd7be492d1 relay: Add DoS subsystem stats to MetricsPort
Related to #40194

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-10-27 10:47:56 -04:00
David Goulet
fff2b92682 Merge branch 'maint-0.4.7' 2022-10-27 10:46:54 -04:00
David Goulet
a1c40c8511 metrics: Fix naming and documentation
After nickm's review, minor changes to names and comments.

Related to #40194

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-10-27 10:45:08 -04:00
David Goulet
dcbedc6c3f Merge branch 'tor-gitlab/mr/596' 2022-10-26 15:27:03 -04:00
David Goulet
06a26f1872 relay: Change the connection metrics name
Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-10-26 15:16:48 -04:00
David Goulet
00f714b374 relay: Add CC RTT reset stats to MetricsPort
Related to #40194

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-10-26 15:16:48 -04:00
David Goulet
e7e18ae914 relay: Add total number of streams seen on MetricsPort
Related to #40194

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-10-26 15:16:48 -04:00
David Goulet
98b98fd3ce rephist: Track number of streams seen per type
Related to #40194

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-10-26 15:16:48 -04:00
David Goulet
dd272b6ef4 Merge remote-tracking branch 'tor-gitlab/mr/638' 2022-10-26 15:12:54 -04:00
David Goulet
78c184d2fe hs: Retry service rendezvous on circuit close
Move the retry from circuit_expire_building() to when the offending
circuit is being closed.

Fixes #40695

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-10-26 15:10:39 -04:00
David Goulet
5b44a32c59 circ: Get rid of hs_circ_has_timed_out
Logic is too convoluted and we can't efficiently apply a specific
timeout depending on the purpose.

Remove it and instead rely on the right circuit cutoff instead of
keeping this flagged circuit open forever.

Part of #40694

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-10-26 15:10:37 -04:00
David Goulet
88b5daf152 circ: Set proper timeout cutoff for HS circuits
Explicitly set the S_CONNECT_REND purpose to a 4-hop cutoff.

As for the established rendezvous circuit waiting on the RENDEZVOUS2,
set one that is very long considering the possible waiting time for the
service to get the request and join our rendezvous.

Part of #40694

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-10-26 15:10:34 -04:00
David Goulet
fb21387882 Merge branch 'tor-gitlab/mr/637' 2022-10-26 15:07:42 -04:00
David Goulet
a7aa22a4e7 hs: Retry rdv circuit if repurposed
This can happen if our measurement subsystem decides to snatch it.

Fixes #40696

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-10-26 15:05:44 -04:00
David Goulet
ca135a127d Merge branch 'maint-0.4.7' 2022-10-26 15:01:43 -04:00
David Goulet
0a49e04691 Merge branch 'tor-gitlab/mr/635' into maint-0.4.7 2022-10-26 15:01:40 -04:00
David Goulet
a2ee39452a Merge branch 'tor-gitlab/mr/633' 2022-10-26 14:58:21 -04:00
David Goulet
59008c6f51 hs: Change the error for a collapsing client circuit
Change it to an "unreachable" error so the intro point can be retried
and not flagged as a failure and never retried again.

Closes #40692

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-10-26 14:56:45 -04:00
David Goulet
bb9f2ea8fb Merge branch 'maint-0.4.7' 2022-10-26 14:21:41 -04:00
David Goulet
a317326aae Merge branch 'maint-0.4.5' into maint-0.4.7 2022-10-26 14:21:41 -04:00
David Goulet
7a851e8983 Merge branch 'tor-gitlab/mr/631' into maint-0.4.5 2022-10-26 14:21:35 -04:00
David Goulet
efad436432 dirauth: Remove Faravahar
Closes #40688

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-10-26 14:20:07 -04:00