[tor-dev] Timers in Arti?

Micah Elizabeth Scott beth at torproject.org
Mon Jan 8 21:01:04 UTC 2024


A variety of timers are needed on the relay side; on the client side 
though, aren't you mostly limited by the requirement of keeping a TCP 
connection open?

Really deep sleep would involve avoiding any protocol-level keepalives 
as well as TCP keepalives. This seems a lot like just shutting down the 
connection to the guard when sleeping; but of course that's got a 
latency penalty and it's visible to anyone who can see network activity.

-beth

On 1/4/24 04:48, Michael Rogers wrote:

> Hi,
>
> If I understand right, the C implementation of Tor has various state 
> machines that are driven by local libevent timers as well as events 
> from the network. For example, when building a circuit, if there 
> hasn't been any progress for a certain amount of time then a timer 
> fires to handle the timeout.
>
> When running Tor on Android, we need to prevent the OS from suspending 
> so that these timers fire when they're supposed to. This uses a lot of 
> battery, because normally the OS would spend most of its time 
> suspended. Unlike a laptop, an Android device with its screen turned 
> off is constantly dipping in an out of suspension, and a lot of the 
> platform's power optimisations are aimed at batching whatever work 
> needs to be done so that the periods of suspension can be longer.
>
> If we allowed the OS to suspend then the timers would fire with 
> arbitrary delays, and I don't really know what impact that would have: 
> I'd speculate that there might be connectivity problems (eg dead 
> circuits not being detected and replaced) and/or network-visible 
> changes in the behaviour of circuits that could affect anonymity.
>
> So I've had a longstanding but not-very-hopeful request that maybe 
> Tor's reliance on timers could be reduced, or at least clarified, so 
> that we could either allow the OS to suspend without breaking 
> anything, or at least know what was likely to break.
>
> And basically I'd just like to renew that request for Arti. Could 
> anyone give me an overview of how these local timers are handled in 
> Arti, or any information about what's likely to happen if the timers 
> are arbitrarily delayed?
>
> Thanks,
> Michael
>
> _______________________________________________
> tor-dev mailing list
> tor-dev at lists.torproject.org
> https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-dev


More information about the tor-dev mailing list