<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mirrors/arti.git/crates/tor-proto/src/congestion, branch arti-v1.4.5</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.5</id>
<link rel='self' href='http://git.dilluti0n.com/mirrors/arti.git/atom?h=arti-v1.4.5'/>
<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>tor-proto: Add an accessor for the cc algorithm.</title>
<updated>2025-06-11T18:02:47Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2025-03-21T18:27:39Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=3637434be521fd83849fa836e781a198419f8bb6'/>
<id>urn:sha1:3637434be521fd83849fa836e781a198419f8bb6</id>
<content type='text'>
Conflux is only supported when prop324 congestion control is enabled, so
we need an accessor for the cc algorithm of a given circuit hop in order
for the conflux code to be able to check *which* cc algorithm is in use.
</content>
</entry>
<entry>
<title>tor-proto: Remove no-longer needed clone()s.</title>
<updated>2025-06-11T17:48:35Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2025-03-21T18:17:24Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=2f332ad090fef8d333e179be33deadaeb39f4c13'/>
<id>urn:sha1:2f332ad090fef8d333e179be33deadaeb39f4c13</id>
<content type='text'>
This doesn't really change anything, but removing the `.clone()` makes
it a bit more obvious that copying the `*Params` is a lightweight
operation.
</content>
</entry>
<entry>
<title>tor-proto: Derive Copy for FixedWindowParams.</title>
<updated>2025-06-11T17:40:46Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2025-03-21T18:26:50Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=d9adad6d45b1ed7e965a01e83a6c6c751c7c32c8'/>
<id>urn:sha1:d9adad6d45b1ed7e965a01e83a6c6c751c7c32c8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>tor-proto: Derive Copy for VegasParams.</title>
<updated>2025-06-11T17:15:00Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2025-03-21T18:16:30Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=601f3a65f2cdb11f2b3313f03c671cdb6b789716'/>
<id>urn:sha1:601f3a65f2cdb11f2b3313f03c671cdb6b789716</id>
<content type='text'>
</content>
</entry>
<entry>
<title>proto: Refactor cc fallback.</title>
<updated>2025-06-10T15:52:28Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2025-06-05T16:38:03Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=fef3034648dede7cc5fb2d698f2825e44144fe24'/>
<id>urn:sha1:fef3034648dede7cc5fb2d698f2825e44144fe24</id>
<content type='text'>
The fallback CC algorithm is _always_ fixed-window, and we should only
use it when the selected CC algorithm is not supported.
</content>
</entry>
<entry>
<title>Move responsibility for choosing extensions into tor-proto</title>
<updated>2025-06-10T15:52:28Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2025-06-05T16:23:51Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=11fe4bb4d74e4f936bc360f6b5c5cf539e94b99c'/>
<id>urn:sha1:11fe4bb4d74e4f936bc360f6b5c5cf539e94b99c</id>
<content type='text'>
Now tor-circmgr no longer needs to check which Protover capabilities
are enabled, or construct a separate CircParameters for each hop.
Instead, tor-proto decides whether to use the fallback CC mode,
based on whether the target supports FLOWCTRL_CC.

Closes #1967.
</content>
</entry>
</feed>
