Roger Dingledine
72729210bf
fix a typo in a comment
2022-02-23 10:03:24 -05:00
Mike Perry
2d0377be75
Reject intro2 cells that request unadvertized congestion control.
2022-02-23 00:42:31 +00:00
Mike Perry
77bf932c83
Properly initialize the cc_enabled field in hs intro data.
2022-02-23 00:23:23 +00:00
Mike Perry
01bda6c23f
Add test for sendme_inc validation.
2022-02-22 19:28:36 +00:00
Mike Perry
8f4bd8730c
Add test for sendme_cell_is_next with sendme_inc of 31
2022-02-22 19:28:36 +00: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
27d948dab8
hs: Fix tests for congestion control
2022-02-22 19:28:35 +00:00
David Goulet
6f45ad3771
hs: Setup congestion control on service rends using intro data
...
Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-02-22 19:28:35 +00:00
David Goulet
729dd14fde
hs: Decode and cache the INTRODUCE cell congestion control extension
...
Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-02-22 19:28:35 +00:00
David Goulet
38e9d9b465
hs: Build INTRODUCE extension in the encrypted section
...
Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-02-22 19:28:35 +00:00
David Goulet
c79df44d22
hs: Setup congestion control on client rends
...
Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-02-22 19:28:35 +00:00
David Goulet
0eaf0e8a31
hs: Republish onion descriptor on sendme_inc change
...
Republishing is necessary to ensure that clients connect using the correct
sendme_inc upon any change. Additionally, introduction points must be
re-chosen, so that cached descriptors with old values are not usable.
We do not expect to change sendme_inc, unless cell size or TLS record size
changes, so this should be rare.
Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-02-22 19:28:34 +00:00
David Goulet
89f5eeefb8
hs: Decode flow-control line
...
This puts the flow control version (unparsed) in the descriptor. The
client doesn't use it yet.
Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-02-22 19:28:34 +00:00
David Goulet
95639f35ae
hs: Encode flow control value in the descriptor
...
This simply adds the "flow-control" line, as detailed in prop324, to the
descriptor. No decoding is done at this commit.
Part of #40506
2022-02-22 19:28:34 +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
b5439d6bd0
trunnel: Make hs/cell_common.trunnel generic
...
Move it to extension.trunnel instead so that extension ABI construction
can be used in other parts of tor than just HS cells.
Specifically, we'll use it in the ntorv3 data payload and make a
congestion control parameter extension using that binary structure.
Only rename. No code behavior changes.
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
f3283266c2
Add test for TAP vs ntor2+ntor3 onion queue ordering
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
812590f8aa
Extend info argument updates for non-ntorv3 cases
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
Mike Perry
095224cdfa
Add circuit param payload definitions to trunnel
2022-02-22 19:28:33 +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
Nick Mathewson
244444e8b1
Add an exported struct to onion handshakes for circuits params
...
THis will eventually hold the congestion control parameters that we
negotiated, plus whatever else is relevant.
2022-02-22 19:28:33 +00:00
Nick Mathewson
358ce9a19d
Add a size argument for the buffer on onion handshake functions
2022-02-22 19:28:33 +00:00
David Goulet
d057f45c6c
Merge branch 'tor-gitlab/mr/531'
2022-02-16 13:59:37 -05:00
David Goulet
7eb5437878
dirauth: Reject EOL 0.3.5.x relays
...
Closes #40559
Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-02-16 13:59:30 -05:00
David Goulet
ea48ddc955
dns: Do not trigger overload general on DNS timeout
...
This was missed in #40527 when the DNS timeout overload general signal
was removed.
Closes #40564
Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-02-14 13:20:53 -05:00
David Goulet
52d1c1fd31
Merge branch 'tor-gitlab/mr/518'
2022-02-09 10:36:26 -05:00
David Goulet
763d72238d
kist: Don't try to flush empty outbuf
...
It is possible that a scheduled channel ended up with 0 bytes in its
outbuf after the scheduling loop and having an outbuf table entry
indicating that we need to flush bytes on the wire after the loop.
This lead to attempt to write 0 bytes up to the TLS layer that would
prevent such action.
All in all, this fixes wasted CPU cycles on attempting to flush nothing.
Fixes #40548
Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-02-08 09:31:17 -05:00
David Goulet
9bf4a9e18a
nss: Don't write empty payload on the wire
...
Part of #40548
Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-02-08 09:31:13 -05:00
Tor CI Release
5afdc851b2
version: Bump version to 0.4.6.10-dev
2022-02-04 12:36:31 -05:00
Tor CI Release
92b4e4d041
version: Bump version to 0.4.5.12-dev
2022-02-04 12:36:01 -05:00
Tor CI Release
81a4f92b64
version: Bump version to 0.4.6.10
2022-02-04 11:09:56 -05:00
Tor CI Release
774374ebf5
version: Bump version to 0.4.5.12
2022-02-04 11:09:12 -05:00
David Goulet
d0d45a97d8
Merge branch 'maint-0.4.6'
2022-02-04 11:07:34 -05:00
David Goulet
728191fc2e
Merge branch 'maint-0.4.5' into maint-0.4.6
2022-02-04 11:07:34 -05:00
Tor CI Release
6a6332a683
fallbackdir: Update list generated on February 04, 2022
2022-02-04 11:05:21 -05:00
Tor CI Release
5ab4fa9fd8
Update geoip files to match ipfire location db, 2022/02/04.
2022-02-04 11:05:13 -05:00
Tor CI Release
cfe022d01d
Update geoip files to match ipfire location db, 2021/12/15.
2022-02-04 10:56:29 -05:00
Tor CI Release
f03cab5dbb
fallbackdir: Update list generated on December 15, 2021
2022-02-04 10:17:10 -05:00
David Goulet
6b06803e0d
Merge branch 'maint-0.4.6'
2022-02-03 08:30:59 -05:00
David Goulet
a08b12568e
Merge branch 'maint-0.4.5' into maint-0.4.6
2022-02-03 08:30:40 -05:00
David Goulet
3c73622f27
hs: Double quote the metrics label value
...
Fixes #40552
Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-02-03 08:30:23 -05:00
Alexander Færøy
8771199e6b
Merge remote-tracking branch 'tor-gitlab/mr/513' into main
2022-01-25 21:42:44 +00:00
David Goulet
421ce94395
version: Bump version to 0.3.5.18
...
Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-01-24 10:48:15 -05:00
David Goulet
28881d0a92
fallbackdir: Update list generated on January 24, 2022
...
Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-01-24 10:35:18 -05:00
David Goulet
324ded93be
geoip: Update to match ipfire location db, 2022/01/24.
...
Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-01-24 10:31:43 -05:00
pseudonymisaTor
f1387b398c
conn: add ClientHello Padding TLS extension
2022-01-23 09:24:28 +00:00
Nick Mathewson
7a3d60d471
Use an alternative solution to the warning in trace_probes_cc.c
2022-01-20 14:46:38 -05:00
Nick Mathewson
935d7b5803
Resolve typedef conflict from congestion_control_t
...
Resumes being able to build on old / esoteric gcc versions.
Fixes bug 40550; bugfix on 0.4.7.1-alpha.
2022-01-20 14:22:00 -05:00
David Goulet
222fbba4ff
relay: Fix memory leak on BUG() code path
...
Introduced in bf10206e9e
which is not
released yet thus no changes file.
Found by Coverity with cid #1495786 .
Fixes #40532
Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-01-19 14:01:34 -05:00
David Goulet
0f9967c945
Merge branch 'maint-0.4.5' into maint-0.4.6
2022-01-19 13:56:43 -05:00
David Goulet
8e407e3329
Merge branch 'maint-0.4.6'
2022-01-19 13:56:43 -05:00
David Goulet
986730e82c
test: Remove HSv2 protover specific test
...
HSv2 is not advertised as a supported protocol version anymore.
This was introduced with the merge-forward of commit 72041c6306
which didn't fix the unit test.
Fixes #40549
Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-01-19 13:36:23 -05:00
David Goulet
4d60ab8fb7
Merge branch 'maint-0.4.5' into maint-0.4.6
2022-01-18 13:15:38 -05:00
David Goulet
162c9f1b81
Merge branch 'maint-0.4.6'
2022-01-18 13:15:38 -05:00
David Goulet
4ab4521c31
Merge branch 'maint-0.3.5' into maint-0.4.5
2022-01-18 13:15:38 -05:00
David Goulet
501d8bbd4c
Merge branch 'tor-gitlab/mr/511' into maint-0.3.5
2022-01-18 13:15:33 -05:00
David Goulet
ec5611e876
Merge branch 'maint-0.4.5' into maint-0.4.6
2022-01-18 13:15:29 -05:00
David Goulet
e949586889
Merge branch 'maint-0.4.6'
2022-01-18 13:15:29 -05:00
David Goulet
49c758af47
Merge branch 'maint-0.3.5' into maint-0.4.5
2022-01-18 13:15:29 -05:00
David Goulet
e523480691
Merge branch 'tor-gitlab/mr/510' into maint-0.3.5
2022-01-18 13:15:23 -05:00
David Goulet
7d9d769123
Merge branch 'maint-0.4.5' into maint-0.4.6
2022-01-18 13:12:35 -05:00
David Goulet
a4510603f7
Merge branch 'maint-0.4.6'
2022-01-18 13:12:35 -05:00
David Goulet
aac5731f86
Merge branch 'maint-0.3.5' into maint-0.4.5
2022-01-18 13:12:13 -05:00
Jérôme Charaoui
d6c2da6630
Update new relay blogpost URL
...
This removes the '/blog/' URL component which relies on a
redirection since the blog has been migrated to Lektor
2022-01-18 12:56:34 -05:00
David Goulet
b9c06718a8
main: Update a dead URL in a log notice
...
Change https://www.torproject.org/download/download#warning to
https://support.torproject.org/faq/staying-anonymous/
Closes #40544
Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-01-18 12:51:52 -05:00
David Goulet
72041c6306
relay: Don't advertise HSv2 protocol version
...
We removed HSIntro=3 and HSDir=1 that are v2 specific. Since 0.3.5.17,
we do not support introducing or being a directory for onion service v2.
Closes #40509
Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-01-18 12:39:06 -05:00
Alexander Færøy
66e7ddb551
Merge remote-tracking branch 'tor-gitlab/mr/503' into main
2021-12-17 16:53:47 +00:00
Nick Mathewson
5591a3bcd6
Merge remote-tracking branch 'tor-gitlab/mr/504'
2021-12-16 12:36:35 -05:00
Tor CI Release
00d7337002
version: Bump version to 0.4.6.9-dev
2021-12-16 12:00:07 -05:00
Tor CI Release
475d669f62
version: Bump version to 0.4.7.3-alpha-dev
2021-12-16 11:59:20 -05:00
David Goulet
7a8aa8e36d
Merge branch 'maint-0.4.6'
2021-12-16 09:28:17 -05:00
Tor CI Release
9a4366b3e3
Update geoip files to match ipfire location db, 2021/12/15.
2021-12-16 09:27:46 -05:00
Tor CI Release
57e8a9b8cb
fallbackdir: Update list generated on December 15, 2021
2021-12-16 09:27:39 -05:00
Tor CI Release
955aa02c0d
version: Bump version to 0.4.7.3-alpha
2021-12-16 09:27:29 -05:00