| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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]>
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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]>
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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]>
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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]>
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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]>
|
| | | |
| | |
| | |
| | |
| | |
| | | |
Related #534
Signed-off-by: David Goulet <[email protected]>
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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]>
|
| |\ \ \
| |_|/
|/| |
| | |
| | |
| | |
| | | |
rpc: Clarify and fix some issues surrounding relative paths.
Closes #1748 and #1749
See merge request tpo/core/arti!2712
|
| | | | |
|
| | | |
| | |
| | |
| | | |
Closes #1748.
|
| | | | |
|
| | | |
| | |
| | |
| | | |
Closes #1749.
|
| |\ \ \
| |_|/
|/| |
| | |
| | | |
fs-mistrust: Fix test compilation on windows.
See merge request tpo/core/arti!2718
|
| |/ /
| |
| |
| |
| |
| |
| |
| |
| | |
`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 macos
Closes #1809
See merge request tpo/core/arti!2717
|
| |/ / |
|
| |\ \
| | |
| | |
| | |
| | | |
rpclib: Clean up after performing cookie auth
See merge request tpo/core/arti!2716
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | |
| | | |
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.
|
| |\ \ \
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
rpc: Rename new_stream_handle to new_oneshot_client.
Closes #1664
See merge request tpo/core/arti!2715
|
| | | | | |
|
| | |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
| |\ \ \
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
arti-rpcserver: Rename MethodNotFound to NoSuchMethod.
Closes #1500
See merge request tpo/core/arti!2714
|
| | | | | |
|
| | |/ /
| | |
| | |
| | | |
Closes #1500.
|
| |\ \ \
| |/ /
|/| |
| | |
| | |
| | |
| | | |
rpc: Document windows USER_DEFAULT connect point.
Closes #1798
See merge request tpo/core/arti!2713
|
| |/ / |
|
| |\ \
| | |
| | |
| | |
| | |
| | |
| | | |
RPC: Implement cookie authentication
Closes #1529
See merge request tpo/core/arti!2702
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | |
| | |
| | |
| | | |
Also fix a bug in decoding, where we accepted too-short strings.
|
| | | | |
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
| | | |
| | |
| | |
| | |
| | | |
Since this is a secret value, it's probably best not to copy it
all over the place.
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | | |
(Since Windows doesn't have unix sockets, this is the option
that will work everywhere.)
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | | |
Now that we have a solid idea of how connections happen,
it's clear we won't need to enable this negotiation mechanism.
|