summaryrefslogtreecommitdiff
path: root/crates
Commit message (Collapse)AuthorAgeFilesLines
...
| * | proto: Use congestion control in circuit reactorDavid Goulet2025-01-166-49/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It is official, congestion control is now used at this commit by the circuit reactor making circuit/sendme.rs unused. Will be removed with another commit. Related #534 Signed-off-by: David Goulet <[email protected]>
| * | circmgr: Modify CircParameters for congestion controlDavid Goulet2025-01-1611-89/+159
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The congestion control parameters are created from the consensus parameters (netparams) and then put into the CircParameters object that is then passed down the tor-proto crate. Because different parameters are selected depending on the circuit type (onion vs exit vs sbws), a CircuitType enum is introduced for the sole purpose of being used to select the right parameters. Related #534 Signed-off-by: David Goulet <[email protected]>
| * | proto: Add Vegas congestion control algorithmDavid Goulet2025-01-163-0/+599
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The big one! This is the Vegas algorithm implementation that is hooked to the CongestionControl object by implementing the algorithm trait. Still, at this commit, nothing is being used by the circuit reactor yet. Related #534 Signed-off-by: David Goulet <[email protected]>
| * | proto: New CongestionControl object and fixed window algorithmDavid Goulet2025-01-164-7/+745
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add the top level CongestionControl object that will allow the circuit reactor to use it in order to decide if a cell can be sent or not. In order to be used, it is configured with an algorithm that implements the CongestionControlAlgorithm trait. The Fixed Window algorithm is also added which essentially implements the SENDME logic as arti knows it today with a fixed window size. The SENDME code has been refactor in two different logical steps in order to accomodate the future Vegas algorithm for which the congestion window logic and SENDME validity is seperated. There is now a SENDME validator that takes care of tracking the tags (authenticated SENDMEs) and validating them upon reception. Then, if valid, the window management is passed down the congestion control algorithm, at this commit, FixedWindow object. Related #534 Signed-off-by: David Goulet <[email protected]>
| * | proto: Add generic objects for congestion controlDavid Goulet2025-01-164-0/+658
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit adds the congestion window object, a round trip estimator (RTT) and a state enum. These 3 entities are used by congestion control in a generic way that is they are passed and used by any algorithm. At this commit, they are not used hence the allow deadcode attribute for now in order to minimize the build warnings. We also introduce the params.rs file containing the parameters, taken from consensus, used to configure these objects. They will be exposed to the tor-cirmgr crate to build the CircParameters. More will come. This also introduces the congestion/ directory that will contain more code in future commits. Related #534 Signed-off-by: David Goulet <[email protected]>
| * | netdir: Add congestion control consensus parametersDavid Goulet2025-01-161-22/+101
| | | | | | | | | | | | | | | | | | Related #534 Signed-off-by: David Goulet <[email protected]>
| * | crates: Remove tor-congestionDavid Goulet2025-01-163-461/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | Crate is unused and most of its code will be reworked and folded into tor-proto in the future commit with the Congestion Control work. Related #534 Signed-off-by: David Goulet <[email protected]>
* | | Merge branch 'rpc-connect-clarify' into 'main'Nick Mathewson2025-01-162-11/+50
|\ \ \ | |_|/ |/| | | | | | | | | | | | | | rpc: Clarify and fix some issues surrounding relative paths. Closes #1748 and #1749 See merge request tpo/core/arti!2712
| * | rpc: Ignore non-absolute paths if they are default.Nick Mathewson2025-01-151-11/+41
| | |
| * | rpc: Reject relative unix paths.Nick Mathewson2025-01-151-0/+9
| | |
* | | fs-mistrust: Fix test compilation on windows.Nick Mathewson2025-01-161-1/+2
| |/ |/| | | | | | | | | | | | | | | `std::os::unix::fs::MetadataExt` was indeed the right trait to import, but it doesn't exist on non-unix platforms. This is another bugfix on !2707. It should retain the fix of !2717. I've confirmed that it builds on Windows and passes tests on Linux and Mac.
* | Fix: Tests fails to run on macoshhamud2025-01-161-5/+5
| |
* | Merge branch 'rpc-clean-up-after-auth' into 'main'Nick Mathewson2025-01-155-13/+24
|\ \ | | | | | | | | | | | | rpclib: Clean up after performing cookie auth See merge request tpo/core/arti!2716
| * | Run cbindgen for changed warnings.Nick Mathewson2025-01-151-1/+1
| | |
| * | rpc: More documentation on cookie_continue.Nick Mathewson2025-01-151-0/+5
| | |
| * | rpclib: Add a note about where cookie auth is documented.Nick Mathewson2025-01-151-0/+1
| | |
| * | rpclib: Clean up after performing cookie authNick Mathewson2025-01-153-12/+17
| | | | | | | | | | | | | | | | | | Previously we never released the intermediary cookie-auth object, which would have left it kicking around on the RPC server side until we finally closed our connection.
* | | Merge branch 'rpc-renaming-2' into 'main'Nick Mathewson2025-01-154-65/+62
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | rpc: Rename new_stream_handle to new_oneshot_client. Closes #1664 See merge request tpo/core/arti!2715
| * | | rpc: Clean up documenation surrounding OneshotClientNick Mathewson2025-01-151-11/+13
| | | |
| * | | rpc: Rename new_stream_handle to new_oneshot_client.Nick Mathewson2025-01-154-55/+50
| |/ / | | | | | | | | | | | | | | | | | | | | | This method doesn't actually create a new stream; it creates a single-use client object that can be used with SOCKS to launch a new stream, and capture an RPC object for that stream. Closes #1664.
* | | Merge branch 'rpc-renaming-1' into 'main'Nick Mathewson2025-01-153-4/+4
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | arti-rpcserver: Rename MethodNotFound to NoSuchMethod. Closes #1500 See merge request tpo/core/arti!2714
| * | | arti-rpcserver: Rename MethodNotFound to NoSuchMethod.Nick Mathewson2025-01-153-4/+4
| |/ / | | | | | | | | | Closes #1500.
* / / rpc: Document windows USER_DEFAULT connect point.Nick Mathewson2025-01-151-1/+0
|/ /
* | Merge branch 'rpc-cookie' into 'main'Nick Mathewson2025-01-1519-332/+958
|\ \ | |/ |/| | | | | | | | | RPC: Implement cookie authentication Closes #1529 See merge request tpo/core/arti!2702
| * rpc: Expose Cookie::load unconditionally.Nick Mathewson2025-01-151-2/+0
| |
| * arti-rpcserver: require latest tiny-keccak.Nick Mathewson2025-01-151-1/+1
| |
| * rpc: Clarify auth-repetition rules.Nick Mathewson2025-01-151-2/+5
| |
| * rpc: Document cookie messages a little more.Nick Mathewson2025-01-151-1/+14
| |
| * rpc: Use symbolic constants for nonce/mac lengths.Nick Mathewson2025-01-151-7/+14
| |
| * rpc: Tests for cookie nonce/mac encoding/decoding.Nick Mathewson2025-01-151-2/+46
| | | | | | | | Also fix a bug in decoding, where we accepted too-short strings.
| * rpc: Refactor Cookie and UnloadedCookie into a single type.Nick Mathewson2025-01-156-28/+45
| |
| * rpc: Update cbindgen warnings.Nick Mathewson2025-01-151-0/+3
| |
| * rpc: consolodate naming of "inherent" auth.Nick Mathewson2025-01-156-14/+19
| | | | | | | | | | | | | | | | | | We don't want to call this "unix path" anywhere, since it corresponds to _any_ case where the ability to negotiate a successful connection means that the client is authorized. We also don't want to call it "none": The authentication is inherent to the connection, not nonexistent.
| * rpc: Tweak cookie protocol to bind both nonces.Nick Mathewson2025-01-153-8/+20
| | | | | | | | | | | | | | | | | | | | Previously participants in the cookie protocol only bound the peer nonce in their MACs. With this change, they bind both nonces. This change is _probably_ not necessary for security, but it can't hurt. It follows a general principle that Adam Langley told me a long time ago: you won't regret binding more, but you might regret binding less.
| * rpc: Keep Cookie in an Arc.Nick Mathewson2025-01-153-5/+11
| | | | | | | | | | Since this is a secret value, it's probably best not to copy it all over the place.
| * arti-rpc-client-core: Client side of cookie authentication.Nick Mathewson2025-01-155-9/+106
| |
| * arti-rpc-client-core: rewrap Cargo.tomlNick Mathewson2025-01-151-1/+9
| |
| * arti-rpcserver: Server side of cookie auth.Nick Mathewson2025-01-154-10/+214
| |
| * arti-rpcserver: Tell connections what kind of auth to expect.Nick Mathewson2025-01-156-28/+37
| |
| * arti-rpcserver: move inherent authentication to its own module.Nick Mathewson2025-01-152-69/+83
| |
| * arti-rpcserver: remove some dead code.Nick Mathewson2025-01-151-57/+0
| | | | | | | | | | Now that we have a solid idea of how connections happen, it's clear we won't need to enable this negotiation mechanism.
| * tor-rpc-connect: Cryptographic support for cookie auth.Nick Mathewson2025-01-152-5/+216
| | | | | | | | Conforms to rpc-cookie-sketch.md.
| * tor-rpc-connect: defer loading auth cookies on the client side.Nick Mathewson2025-01-153-6/+37
| | | | | | | | | | We want to load cookies only after we've connected and gotten a banner.
| * tor-rpc-connect: move cookie auth support to its own module.Nick Mathewson2025-01-155-171/+172
| |
* | Merge branch 'relay-bin-3' into 'main'opara2025-01-152-21/+2
|\ \ | | | | | | | | | | | | arti-relay: remove 'override_net_params' config See merge request tpo/core/arti!2709
| * | arti-relay: remove 'override_net_params' configSteven Engler2025-01-142-21/+2
| | | | | | | | | | | | | | | | | | | | | We think that for relays, the 'override_net_params' config option is overly broad and a footgun. We can always re-add this back later if we want to, but for now the focus will be on exposing specific config options for features that are okay to be changed by users.
* | | tor-chanmgr: Update NetParamsExtract docs (fmt).Gabriela Moldovan2025-01-151-1/+2
| | |
* | | tor-chanmgr: Update NetParamsExtract docs.Gabriela Moldovan2025-01-151-4/+1
| | | | | | | | | | | | | | | This also removes the TODO that was addressed by adding the kist params to this type.
* | | tor-chanmgr: Move KIST and padding params to ChannelParams.Gabriela Moldovan2025-01-151-11/+22
| | |
* | | tor-proto: Remove dependency on tor-netdir.Gabriela Moldovan2025-01-154-46/+48
| | | | | | | | | | | | | | | | | | | | | | | | This moves the `NetParameters -> KistParams` conversion to `tor-chanmgr`. Prompted by https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2706#note_3147557