David Goulet
331204e100
Revert "cmux: Don't pick a marked for close circuit as active"
...
This reverts commit 4f1298e418
.
2022-06-23 10:55:56 -04:00
David Goulet
4f1298e418
cmux: Don't pick a marked for close circuit as active
...
Fixes #25312
Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-06-23 09:44:25 -04:00
David Goulet
7fc474bd3f
Merge branch 'maint-0.4.7'
2022-06-17 09:13:31 -04:00
Mike Perry
b0496d4019
Fix for RTT calculation hang during congestion control.
...
Only cache RTT on explicit stalls; Only use this cache for the
RTT decrease case. Otherwise use only local circuit RTT state for clock jump
checks.
2022-06-17 08:56:54 -04:00
David Goulet
1d6470a2a8
Merge branch 'maint-0.4.7'
2022-06-15 12:25:46 -04:00
Mike Perry
84e31c00da
Demote "Unexpected path length" log to info.
...
You win Maze; we surrender.
2022-06-15 14:42:37 +00:00
Mike Perry
e41b680f50
Demote a warning about finding hops in path if no dir info.
...
Leave it at notice if we do have enough dir info.
2022-06-15 14:13:09 +00:00
David Goulet
b733f9d6ac
Merge branch 'maint-0.4.7'
2022-06-02 16:11:04 -04:00
Mike Perry
9769b77c9b
Demote log message to info.
...
This log is harmless, and can be common at relays if clients are sending XOFF.
2022-06-02 18:48:14 +00:00
Alex Xu (Hello71)
87b2ce6f84
Trigger OOS on bind failures ( fixes #40597 )
2022-05-21 21:30:06 -04:00
David Goulet
0f7a1f0351
Merge branch 'tor-gitlab/mr/561'
2022-05-16 08:45:15 -04:00
Mike Perry
ed3399ab06
Bug 40598: Demote warn log about odd path lengths with congestion control.
2022-04-26 12:14:26 -04:00
Alex Xu (Hello71)
15e95c3bda
Use tor_event_free instead of event_del+tor_free
...
Using tor_free is wrong; event_free must be called for objects obtained from
event_new. Additionally, this slightly simplifies the code.
Also, add a static_assert to prevent further instances.
2022-04-20 00:14:25 -04:00
David Goulet
f64a88e72d
Merge branch 'tor-gitlab/mr/490'
2022-03-16 13:35:33 -04:00
Mike Perry
f6f7c4e846
Emit control port notification for XON/XOFF
2022-03-14 15:16:26 -04:00
Mike Perry
c7c2287d07
Make a check for origin circuit explicit.
2022-03-03 20:55:46 +00:00
Mike Perry
7cb050bd7d
Ensure CIRC_BW event is emitted immediately upon slow start exit.
...
This ensures sbws gets this information quickly, so it can begin measurement.
2022-03-03 20:55:46 +00:00
Mike Perry
646a1d5f9a
Add congestion control fields to CIRC_BW control port event
2022-03-03 20:06:38 +00:00
Dimitris Apostolou
2905e7667e
Fix typos
2022-02-25 11:41:34 +02:00
David Goulet
45416356ed
Merge branch 'tor-gitlab/mr/488'
2022-02-23 15:21:40 -05:00
David Goulet
d09e58d9bf
cc: Fix memleak when building extension response
...
Fixes #40575
Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-02-23 14:40:04 -05:00
Mike Perry
5c88bea84c
Add test for circuit_sendme_cell_is_next() when sendme_inc is 100.
...
This ensures compatibility with old tor.
2022-02-22 19:28:36 +00:00
Mike Perry
a956b20c1d
Add a delta parameter to Vegas.
...
This allows us to cap the queue use during steady state. In shadow, this
reduced instances of long circuit queues at relays.
2022-02-22 19:28:35 +00:00
Mike Perry
3a3f111b23
Exit slow start at the gamma threshold
...
This improves performance and fairness.
2022-02-22 19:28:35 +00:00
Mike Perry
1960bf09f3
Increment by at least 2 sendme_incs in slow start
2022-02-22 19:28:35 +00:00
Mike Perry
d62f9c9d00
Only apply more frequent cwnd updates after slow start.
2022-02-22 19:28:35 +00:00
Mike Perry
43f6f3fd3a
Make N_EWMA a percentage of CWND update rate, capped by a max value.
...
This proved better in Shadow sims than just a multiple of CWND.
2022-02-22 19:28:35 +00:00
Mike Perry
3079e2cacc
Relocate two parameters from circuit scope to global scope.
...
Changes in these will not affect in-progress transfers.
2022-02-22 19:28:35 +00:00
Mike Perry
4f3a0e39cf
Guard against 0 time delta in BDP calc.
...
This can only happen in Shadow, but it will cause issues there.
2022-02-22 19:28:35 +00:00
Mike Perry
8052d0c2c0
Increase RTT ratio used to detect monotime jumps/stalls.
...
In Shadow, we saw RTT jumps as high as 1000 naturally.
So let's set this to 5000, to give us some breathing room.
2022-02-22 19:28:35 +00:00
Mike Perry
338d00ba92
Fix NULL pointer deref in logs
2022-02-22 19:28:35 +00:00
Mike Perry
86f81abe30
Properly compute the number or recv cells from deliver_window
...
Without this conversion, there is an implict 1000-recv_cells, which causes
the mod to fail if it is not a factor of 1000.
2022-02-22 19:28:35 +00:00
Mike Perry
b2553bfba2
Use path type hint for Vegas queue parameters.
...
These parameters will vary depending on path length, especially for onions.
2022-02-22 19:28:35 +00:00
Mike Perry
0a6cde8756
Set new defaults for congestion control parameters.
...
Defaults determined from Shadow experimentation.
More parameter functionality changes to follow.
2022-02-22 19:28:35 +00:00
David Goulet
d4cf3fadec
cc: Change edge_get_ccontrol() to look at both cpath and on_circuit
...
Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-02-22 19:28:35 +00:00
David Goulet
02f4e7b42e
cc: Export sendme_inc validation into public function
...
This is needed for client validation of server descriptor value,
before launching a rend/intro.
2022-02-22 19:28:34 +00:00
David Goulet
bbf160d311
cc: Use trunnel extension for ntorv3 circ parameters
...
Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-02-22 19:28:34 +00:00
David Goulet
dd938e58d3
protover: Add function to get the value of a single type
...
We can now query the protover subsystem to get the current value we
support for a specific protover type.
This will be useful for prop324 onion service part which puts in the
FlowCtrl value in the service descriptor.
No behavior change.
Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-02-22 19:28:34 +00:00
Mike Perry
6b2086773c
Add test for congestion control negotiation logic.
2022-02-22 19:28:34 +00:00
Mike Perry
b2789ae72a
Add hidden torrc option to always try CC negotiation.
...
This is for public network testing and for sbws. Should not otherwise be used,
hence it is an undocumented __option.
The option deliberately does not allow force-disabling congestion control, as
this is bad for queueing and fairness.
2022-02-22 19:28:34 +00:00
Mike Perry
a0eeadfba2
Handle other places that use onion handshake type values
...
We want ntor and ntorv3 to use the same queues and stats.
2022-02-22 19:28:34 +00:00
Mike Perry
a07e008616
Congestion control usage of negotiated params
2022-02-22 19:28:34 +00:00
Mike Perry
1b1c261080
Protover flag handling for congestion control negotiation
2022-02-22 19:28:34 +00:00
Mike Perry
76bdadce12
Hook up client usage of congestion control negotiation
2022-02-22 19:28:34 +00:00
Mike Perry
b6d5fbba7d
Implement congestion control parameter negotiation
2022-02-22 19:28:34 +00:00
Nick Mathewson
93318ba5e2
Convert TODO into TODO-324 for better visibility.
2022-02-22 19:28:33 +00:00
Nick Mathewson
662b9c1c0d
Add stub argument for constructing congestion_control_t
2022-02-22 19:28:33 +00:00
Nick Mathewson
a511718a30
Negotiated circuit parameters must pass from worker.
2022-02-22 19:28:33 +00:00
Nick Mathewson
baaabb503c
Use protover to signal support for ntor3 + congestion control.
2022-02-22 19:28:33 +00:00
Nick Mathewson
bd2e9a4409
Implement core of ntor3 negotiation.
...
There are a lot of TODOs about what to send, whom to send it to, and
etc.
2022-02-22 19:28:33 +00:00