Capture telemetry about bootstrapping times by PT configuration in censored regions
As part of the Sponsor 96 project we've implemented a new feature in Tor Browser called Connection Assist (historically referred to as [mostly] automatic censorship detection), which gives users the option of trying a second bootstrap after the first fails due to censorship of the Tor Network. During the second bootstrap, Tor Browser looks up the user's location via a new moat API, and returns a short shopping list of bridge configurations to try in order (see circumvention.json), that should circumvent Tor Network blocking in their country.
In addition to Tor Browser, OnionShare will also implement the censorship circumvention API – and other Tor-powered apps will likely follow suit in future too.
However, bootstrapping times in the target regions for S96 (specifically China & Tibet, rather than Hong Kong) remain a source of concern. Long bootsrapping times create uncertainty over whether or not Tor is actually connecting, or is stuck in a state of infinite bootstrapping (which we've observed too, see: tpo/applications/tor-browser#40970).
We're currently considering a number of workarounds to help alleviate these issues, including (for example):
- Displaying contextual hints about bootstrapping times by region and PT to help set user expectations
- Providing encouragement when Tor has been stuck at the same bootstrapping step for X amount of time
- Introducing timeouts which display non-blocking errors, the duration of which will need to be set per-region (thus providing a means to escape from the dreaded infinite bootstrap issue)
Given the above, it would be useful to measure bootstrapping times by PT/bridge configuration in censored regions. OONI already includes this measurement in their Snowflake tests, see this example for instance.
In addition, there may be an opportunity to improve how we collect data about working PT/bridge configurations in order to keep the circumvention.json up to date and as effective as possible.
Three options have been proposed so far:
- Capturing telemetry about bootstrapping at the network level, i.e. on metrics.torproject.org
- Adding additional tests to vantage points in the target regions
- Measuring bootstrapping at the application level, e.g. by implementing cleaninsights.org in Tor Browser, OnionShare etc.