<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mirrors/arti.git/crates/tor-proto/src/congestion/rtt.rs, branch arti-v1.4.6</title>
<subtitle>mirror of https://gitlab.torproject.org/tpo/core/arti
</subtitle>
<id>http://git.dilluti0n.com/mirrors/arti.git/atom?h=arti-v1.4.6</id>
<link rel='self' href='http://git.dilluti0n.com/mirrors/arti.git/atom?h=arti-v1.4.6'/>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/'/>
<updated>2025-06-27T14:16:16Z</updated>
<entry>
<title>proto: Make RttEstimator::{ewma,min}_rtt_usec() return `Option`.</title>
<updated>2025-06-27T14:16:16Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2025-06-25T18:58:50Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=1e4a9161e78b78aadbe777cd5e4991a2582c8918'/>
<id>urn:sha1:1e4a9161e78b78aadbe777cd5e4991a2582c8918</id>
<content type='text'>
A `None` value signals to the conflux code to know to fall back on the
initial RTT of the circuit.

Without this change, the conflux switching logic is broken as we end up
staying on the leg with the best initial RTT forever (the other leg is
never picked, because its `ewma_rtt()` is stuck on `u32::MAX`, and never
updated as we never send on it).
</content>
</entry>
<entry>
<title>proto: Rewrite can_crosscheck_with_current_estimate for clarity.</title>
<updated>2025-06-25T16:21:46Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2025-06-25T16:04:32Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=65d565ccfe7880ab0e3b6ba70c1f822ace224246'/>
<id>urn:sha1:65d565ccfe7880ab0e3b6ba70c1f822ace224246</id>
<content type='text'>
The expanded expression makes it easier to see that
`can_crosscheck_with_current_estimate()` can never return `true` if
`self.ewma_rtt` is `None`, and that the `expect()` from
`is_clock_stalled()` cannot panic.
</content>
</entry>
<entry>
<title>proto: Make RTT estimates default to None (fmt).</title>
<updated>2025-06-25T16:21:46Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2025-06-25T16:03:59Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=2c061d5589858a73539a1a078f993071103574a5'/>
<id>urn:sha1:2c061d5589858a73539a1a078f993071103574a5</id>
<content type='text'>
</content>
</entry>
<entry>
<title>proto: Make RTT estimates default to None.</title>
<updated>2025-06-25T16:21:46Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2025-06-25T15:43:45Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=1a901b349a53b3a625b76af923324da90a39a82b'/>
<id>urn:sha1:1a901b349a53b3a625b76af923324da90a39a82b</id>
<content type='text'>
The `RttEstimator` now uses `None` to represent not-yet-measured RTTs.

Previously, all the measured RTTs defaulted to 0, in contradiction with
the `RttEstimator::{min,ewma}_rtt_usec()` docs, which state that both
functions are supposed to return `u32::MAX` if there is no estimate.

Closes #2049
</content>
</entry>
<entry>
<title>fix: fix typos</title>
<updated>2025-01-30T08:39:30Z</updated>
<author>
<name>Dimitris Apostolou</name>
<email>dimitris.apostolou@icloud.com</email>
</author>
<published>2025-01-30T08:39:30Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=6371829c976f6a5b77d46bf977f369a915f2ced3'/>
<id>urn:sha1:6371829c976f6a5b77d46bf977f369a915f2ced3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>congestion: Use getters for all parameters</title>
<updated>2025-01-16T14:16:01Z</updated>
<author>
<name>David Goulet</name>
<email>dgoulet@torproject.org</email>
</author>
<published>2025-01-15T15:29:46Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=2fd9a4d5b814b3a0aa031313d081f0d306016908'/>
<id>urn:sha1:2fd9a4d5b814b3a0aa031313d081f0d306016908</id>
<content type='text'>
Allows us to remove the pub.

Signed-off-by: David Goulet &lt;dgoulet@torproject.org&gt;
</content>
</entry>
<entry>
<title>congestion: Add standard clippy checks to tests</title>
<updated>2025-01-16T14:16:01Z</updated>
<author>
<name>David Goulet</name>
<email>dgoulet@torproject.org</email>
</author>
<published>2025-01-08T19:04:07Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=69d4df8eca23637f68d1e83027dc4f3ebcc52a43'/>
<id>urn:sha1:69d4df8eca23637f68d1e83027dc4f3ebcc52a43</id>
<content type='text'>
Signed-off-by: David Goulet &lt;dgoulet@torproject.org&gt;
</content>
</entry>
<entry>
<title>congestion: Make a test_utils.rs</title>
<updated>2025-01-16T14:16:01Z</updated>
<author>
<name>David Goulet</name>
<email>dgoulet@torproject.org</email>
</author>
<published>2025-01-08T15:50:46Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=6a1ee397fad1a5936e1f90d2c2c0744f8a0536fd'/>
<id>urn:sha1:6a1ee397fad1a5936e1f90d2c2c0744f8a0536fd</id>
<content type='text'>
Instead of having the congestion.rs test module public, make a
test_utils.rs file that contains code for other unit tests within the
congestion module.

Signed-off-by: David Goulet &lt;dgoulet@torproject.org&gt;
</content>
</entry>
<entry>
<title>congestion: Remove duplicate RttParameters struct</title>
<updated>2025-01-16T14:16:01Z</updated>
<author>
<name>David Goulet</name>
<email>dgoulet@torproject.org</email>
</author>
<published>2025-01-08T15:33:52Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=6b69a249e5826b40c447cc1f360700a9008b84a3'/>
<id>urn:sha1:6b69a249e5826b40c447cc1f360700a9008b84a3</id>
<content type='text'>
Turns out that RoundTripEstimatorParams is the same exact thing so one
less data structure.

Signed-off-by: David Goulet &lt;dgoulet@torproject.org&gt;
</content>
</entry>
<entry>
<title>proto: Add generic objects for congestion control</title>
<updated>2025-01-16T14:16:01Z</updated>
<author>
<name>David Goulet</name>
<email>dgoulet@torproject.org</email>
</author>
<published>2024-04-30T13:52:11Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=aff3033aa59d0c135cc47d4b3c1e921d90707aca'/>
<id>urn:sha1:aff3033aa59d0c135cc47d4b3c1e921d90707aca</id>
<content type='text'>
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 &lt;dgoulet@torproject.org&gt;
</content>
</entry>
</feed>
