[tor-dev] Timers in Arti?

Michael Rogers michael at briarproject.org
Thu Jan 4 12:48:40 UTC 2024


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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_0x11044FD19FC527CC.asc
Type: application/pgp-keys
Size: 12048 bytes
Desc: OpenPGP public key
URL: <http://lists.torproject.org/pipermail/tor-dev/attachments/20240104/63deb3cf/attachment.key>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature.asc
Type: application/pgp-signature
Size: 495 bytes
Desc: OpenPGP digital signature
URL: <http://lists.torproject.org/pipermail/tor-dev/attachments/20240104/63deb3cf/attachment.sig>


More information about the tor-dev mailing list