There have been protests, daily Internet shutdowns, and increased censorship in Iran since 2022-09-21, about 5 days ago. The increased censorship have caused people to use Tor and its pluggable transports more than before. Here is a graph of the users of each kind of transport in Iran. See below for commentary and caveats.
This graph—and all Tor Metrics graphs—does not show unique daily IP addresses, as you might expect; instead it shows an estimate of concurrent users, averaged per day. For example, if you see a data point at 44751 on September 21, that means that if you were to count the number of users connected at random times during the 24 hours of September 21, on average you would count 44751 connections.
The reason I’ve made a special graph, instead of just linking to some Tor Metrics graphs, is that Tor Metrics currently undercounts Snowflake users. The problem is that the Snowflake bridge has an unusual multi-instance tor setup for scaling reasons. Tor Metrics only counts 1 out of N descriptors published by the bridge, where N was recently increased from 4 to 8 and then to 12. To make this graph, I reimplemented the user estimation algorithm from Tor Metrics, except taking all the Snowflake instances into account. That said, you can get pretty much the same graph by mentally combining Directly connecting users from Iran and Bridge users by transport from Iran—just know that the Snowflake counts will be too low in the latter.
Source code for graph
The first caveat is that the most recent points on the graph are subject to change as relays publish their descriptors. The 24 Sep column may change a little as it settles.
The second caveat is that the meek counts are unbelievably high, in my opinion. Just knowing how the pluggable transport protocol works, it is hard for a server to support more than about 64000 concurrent users, because it will run out of localhost port numbers. (It may be possible to work around this limitation, but as far as I know the meek bridge has not done anything special in that regard.) Also, with my experience scaling the Snowflake bridge, I know that a tor process simply cannot support that many users on one CPU core A further piece of evidence against the meek counts is the bridge’s own bandwidth and client graphs. As the client count increased, the bandwidth went down. This may be an artifact of the way client counts are estimated, which has been suspected of inflating counts in the past.
The Snowflake bridge has had a lot of measurement and engineering in the past few days to be able to keep up with the increased load. These are the changes that have been made so far:
- Increase number of tor instances from 4 to 8 on snowflake-01 bridge
- Deploy snowflake-server performance improvements 2022-09-23
- Deploy further snowflake-server performance improvements 2022-09-24
- Increase number of tor instances from 8 to 12 on snowflake-01 bridge
- snowflake-01 planned hardware maintenance (installed more RAM)
- Reduce turbotunnel queueSize from 2048 to 512