Commit Graph

1442 Commits

Author SHA1 Message Date
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
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
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
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
David Goulet fc11b38f2a Merge branch 'maint-0.4.7' 2023-01-26 13:11:22 -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
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 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 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
Mike Perry 8c017e9cff Merge branch 'mr-674-fixup' into main+mr-674-fixup 2023-01-10 16:18:41 +00: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 1e6d839ce9 Merge branch 'tor-gitlab/mr/668' 2022-12-22 14:03:40 -05: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 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 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
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 3ac08ac200 Merge branch 'tor-gitlab/mr/658' 2022-11-28 09:33:32 -05: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